最近須要作一個前端網站,多個頁面,有搜索。決定使用react,雖然之前也用過react作過管理後臺,可是從0開始建站仍是第一次,中間遇到了許多問題和各類坑,最終能夠算是還算圓滿的解決了。如下記錄主要操做過程,大量參考了網上查找到的各類資料。javascript
安裝npmphp
$ brew install node
配置cnpmcss
$ npm install -g cnpm --registry=https://registry.npm.taobao.org $ npm config set registry https://registry.npm.taobao.org
安裝create-react-apphtml
$ cnpm install -g create-react-app
$ create-react-app my-app
進入項目目錄前端
$ cd my-app/
根據需求,大體須要安裝路由、less、ajax、代理等支持軟件java
$ cnpm install react-router-dom --save $ cnpm install history --save
若是使用createBrowserHistory的話,代碼編譯後上傳到nginx環境,須要在配置中增長如下內容node
location / { try_files $uri /index.html; }
$ cnpm install less less-loader --save-dev $ npm run eject
最後一步是將項目配置文件暴露出來,react要支持less必需要修改config/webpack.config.jsreact
打開 config/webpack.config.js,有三個地方要修改webpack
一、找到nginx
const sassModuleRegex = /\.module\.(scss|sass)$/;
在後面添加
const lessRegex = /\.less$/; const lessModuleRegex = /\.module\.less$/;
二、找到
if (preProcessor) {
整塊改爲
if (preProcessor) { if(preProcessor === 'less-loader') { loaders.push({ loader: require.resolve(preProcessor), options: { sourceMap: isEnvProduction && shouldUseSourceMap, javascriptEnabled: true, }, }); }else{ loaders.push({ loader: require.resolve(preProcessor), options: { sourceMap: isEnvProduction && shouldUseSourceMap, }, }); } }
三、找到 test: sassModuleRegex,
開頭的對象,在後面增長
{ test: lessRegex, exclude: lessModuleRegex, use: getStyleLoaders( { importLoaders: 2, sourceMap: isEnvProduction && shouldUseSourceMap, }, 'less-loader' ), sideEffects: true, }, { test: lessModuleRegex, use: getStyleLoaders( { importLoaders: 2, sourceMap: isEnvProduction && shouldUseSourceMap, modules: true, getLocalIdent: getCSSModuleLocalIdent, }, 'less-loader' ), },
$ cnpm install whatwg-fetch --save
$ cnpm install http-proxy-middleware --save
新建文件 src/setupProxy.js
const proxy = require('http-proxy-middleware'); module.exports = app => { app.use( proxy('/api', { target: 'http://localhost/api/index.php/', changeOrigin: true, pathRewrite: { '^/api': '', }, }) ); };
效果是前端 fetch('/api/web/list')
實際指向的是:http://localhost/api/index.ph...
$ npm start
基本的安裝和配置差很少就是這些了,接下來就是個人強項了,開始碼代碼