如何将 JSX 中的 href/src 值从相对路径替换为完整路径?
How to replace href/src value in JSX from relative path to full path?
项目:
├── img
│ └── header.jpg
├── index.html
├── js
│ └── react.js
└── jsx
└── header.jsx
header.jsx
var Header = React.createClass({
render: function() {
return (
<img className="header" src="./img/header.jpg" alt="header"/>
);
}
});
当我将静态文件(js、css、图像)部署到 CDN 主机时,header.png 完整路径将为 http:// cdn。[=31= .jpg;
但是我的项目宿主是http://example.com,header.jpg无法加载,所以我想要想办法替换src值(例如:./img/header.jpg -->http:// cdn.com/img/header.jpg )
-----顺便说一句------
希望用gulp解决这个问题;
我喜欢 gulp-assetpaths 是替换 HTML 的好方法,但在 jsx
中不起作用
我建议你看看 Webpack,它能很好地处理这个问题。你所做的是这样的:
var path = require('./img/header.jpg');
return <img className="header" src={path} alt="header" />
当您需要图像时,您可以在构建完成后将 url 返回到该图像所在的位置。已经有 Webpack 加载器可以处理这个问题(比如文件加载器),但您始终可以创建自己的加载器来重写 CDN 的路径。请注意,Webpack 对待 Javascript 中的 require
与对待 CSS 中的 url
相同,因此无论您在哪里引用图像都没有关系,它仍然会通过你的装载机。
您当然可以使用不同的生产和开发策略,因此您只需 return CDN url 用于生产构建。
项目:
├── img
│ └── header.jpg
├── index.html
├── js
│ └── react.js
└── jsx
└── header.jsx
header.jsx
var Header = React.createClass({
render: function() {
return (
<img className="header" src="./img/header.jpg" alt="header"/>
);
}
});
当我将静态文件(js、css、图像)部署到 CDN 主机时,header.png 完整路径将为 http:// cdn。[=31= .jpg;
但是我的项目宿主是http://example.com,header.jpg无法加载,所以我想要想办法替换src值(例如:./img/header.jpg -->http:// cdn.com/img/header.jpg )
-----顺便说一句------
希望用gulp解决这个问题; 我喜欢 gulp-assetpaths 是替换 HTML 的好方法,但在 jsx
中不起作用我建议你看看 Webpack,它能很好地处理这个问题。你所做的是这样的:
var path = require('./img/header.jpg');
return <img className="header" src={path} alt="header" />
当您需要图像时,您可以在构建完成后将 url 返回到该图像所在的位置。已经有 Webpack 加载器可以处理这个问题(比如文件加载器),但您始终可以创建自己的加载器来重写 CDN 的路径。请注意,Webpack 对待 Javascript 中的 require
与对待 CSS 中的 url
相同,因此无论您在哪里引用图像都没有关系,它仍然会通过你的装载机。
您当然可以使用不同的生产和开发策略,因此您只需 return CDN url 用于生产构建。