螞蟻金服UI-Antd-design Mobile of React按需載入
阿新 • • 發佈:2018-12-23
import React from 'react'; import ReactDOM from 'react-dom'; // 由於 antd 元件的預設文案是英文,所以需要修改為中文 import zhCN from 'antd/lib/locale-provider/zh_CN'; import moment from 'moment'; import 'moment/locale/zh-cn'; //import 'antd-mobile/dist/antd-mobile.css'; // or 'antd-mobile/dist/antd-mobile.less' import { Button } from 'antd-mobile'; moment.locale('zh-cn'); class App extends React.Component { render() { return ( <div> <Button>Start</Button> </div> ); } } ReactDOM.render(<App />, document.getElementById('root'));
按需載入的方式官網給我們推薦了兩種;
第一種方式:babel-plugin-import
1、在專案上進行安裝 npm install babel-plugin-import --save
2、裝載
A、野蠻在webpack.config.js裝載
module.exports = function(webpackConfig) { webpackConfig.babel.plugins.push('transform-runtime'); webpackConfig.babel.plugins.push(['import', { libraryName: 'antd-mobile', style: 'css', }]); return webpackConfig; };
B、在根目錄下新建.babelrc進行配置
{
"presets": ["react", "es2015"],
"env": {
"dev": {
"plugins": ["transform-runtime", ["import", { "libraryName": "antd-mobile", "style": true }]] //style引數css時載入css檔案,true時載入less
}
}
}
Babel會從當前目錄查詢.babelrc檔案。這個目錄是檔案被編譯的目錄。如果不存在,那麼他會根據目錄樹上尋這個檔案,或者在package.json中尋找"babel":{}這個選項。使用"babelrc":false進行設定來停止查詢行為
C、也可以在package.json中配置.babelrc
{
"name":"Antd-Mobile",
"version":"1.0.0",
"babel":{
//在此設定
}
}
"babel": {
"presets": ["react", "es2015"],
"plugins": [["import", [{ "libraryName": "antd-mobile", "style": "css" }]]]
}
外掛效果:注意點:1、在使用babel-plugin-import時webpack.config.js配置loader載入器時需去除include和exclude,因為antd-mobile的樣式依賴都在node_modules,否則它將不會去包裡尋找資源;
module: {
loaders: [
{ test: /\.(js|jsx)$/,
//exclude: /node_modules/,
loader: 'babel-loader'
},//exclude 排除
{ test: /\.less$/,
//exclude: /node_modules/,
loader: 'style!css!postcss!less' },
{ test: /\.css$/,
//exclude: /node_modules/,
loader: 'style!css!postcss' },
{ test:/\.(png|gif|jpg|jpeg|bmp)$/i, loader:'url-loader?limit=5000' }, // 限制大小5kb
{ test:/\.(png|woff|woff2|svg|ttf|eot)($|\?)/i, loader:'url-loader?limit=5000'} // 限制大小小於5k
]
},
2、注意在webpack配置按需載入後需要把package.json中的babel去除;
3、當然還有利用一些腳手架新建專案後根據腳手架,如Create-React-App等,去配置相關的babel即可,萬變不離其宗;
eg:
"extraBabelPlugins": [
"transform-runtime",
['import', { 'libraryName': 'antd-mobile', 'libraryDirectory': 'lib', 'style': true }]
],
第二種方式:就是直接寫路徑,用到什麼就引入什麼,
import DatePicker from 'antd-mobile/lib/date-picker'; // 載入 JS
import 'antd-mobile/lib/date-picker/style/css'; // 載入 CSS
// import 'antd-mobile/lib/date-picker/style'; // 載入 LESS
效果:
謝謝!歡迎糾正補充~~
附: