一 开始javascript
1 全局安装脚手架css
npm install -g create-react-app
这有个坑,就是在window下安装一直会报错,报错信息以下:html
解决办法:在开始菜单栏里打开cmd的时,右击选择“以管理员身份运行”。而后再在打开的cmd里运动install就没问题了。java
2 经过脚手架搭建项目node
create-react-app <项目名称>
3 开始项目react
cd <项目名>
npm run start
1 package.json 一览webpack
{ ...... "homepage": ".", "dependencies": { "react": "^16.4.0", "react-dom": "^16.4.0", "react-scripts": "1.1.4" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test --env=jsdom", "eject": "react-scripts eject" } }
2 可用命令说明:git
http://localhost:3000
访问项目;"homepage": "."
(上面配置文件已给出), 同时build后的项目须要在服务器下才能访问;不然打开的将是空白页面;%PUBLIC_URL%
来指向public目录路径;Create React App(如下简称 CRA)是建立 React 应用的一个脚手架,它与其余脚手架不一样的一个地方就是将一些复杂工具(好比 webpack)的配置封装了起来,让使用者不用关心这些工具的具体配置,从而下降了工具的使用难度。可是对于一些熟悉 webpack 的开发者来讲,他们可能想对 webpack 配置作一些修改,这个时候应该怎么办呢?咱们能够经过项目eject来进行es6
使用 CRA 建立完项目之后,项目在package.json
里面提供了这样一个命令:github
{ ... "scripts": { "eject": "react-scripts eject" }, ... }
执行完这个命令——yarn run eject
后会将封装在 CRA 中的配置所有反编译
到当前项目,这样用户就能够彻底取得 webpack 文件的控制权,想怎么修改就怎么修改了。
踩坑) 使用create-react-app命令建立一个react项目,运行npm run eject生成配置文件,报了下面的错:
Remove untracked files, stash or commit any changes, and try again. npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! test@0.1.0 eject: `react-scripts eject` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the test@0.1.0 eject script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\lenovo\AppData\Roaming\npm-cache\_logs\2018-11-01T04_03_50_129Z-debug.log
主要问题是脚手架添加.gitgnore文件,可是却没有本地仓库,按照如下顺序就能够正常使用
create-react-app test cd test git init git add . git commit -m 'Saving before ejecting' npm run eject
安装依赖
npm install less-loader less -dev
经过npm run eject暴露出配置时候,webpack配置文件只有webpack.config.js,
但没有webpack.config.dev.js和webpack.config.prod.js,查看网上各类解决办法后,发现是由于create-react-app官方脚手架升级了。
这里咱们就在webpack.config.js配置less。
方法:
//找到此位置 // style files regexes const cssRegex = /\.css$/; const cssModuleRegex = /\.module\.css$/; const sassRegex = /\.(scss|sass)$/; const sassModuleRegex = /\.module\.(scss|sass)$/; //在此添加以下两个常量 const lessRegex =/\.less$/; const lessModuleRegex=/\.module\.less$/; // This is the production and development configuration. // It is focused on developer experience, fast rebuilds, and a minimal bundle
//找到此位置 { test: cssRegex, exclude: cssModuleRegex, use: getStyleLoaders({ importLoaders: 1, sourceMap: isEnvProduction && shouldUseSourceMap, }), // Don't consider CSS imports dead code even if the // containing package claims to have no side effects. // Remove this when webpack adds a warning or an error for this. // See https://github.com/webpack/webpack/issues/6571 sideEffects: true, }, // Adds support for CSS Modules (https://github.com/css-modules/css-modules) // using the extension .module.css { test: cssModuleRegex, use: getStyleLoaders({ importLoaders: 1, sourceMap: isEnvProduction && shouldUseSourceMap, modules: true, getLocalIdent: getCSSModuleLocalIdent, }), }, //在这以后仿照上面添加以下代码 { test: lessRegex, exclude: lessModuleRegex, use: getStyleLoaders({ importLoaders: 2, sourceMap: isEnvProduction && shouldUseSourceMap, }), sideEffects: true, }, { test: lessModuleRegex, use: getStyleLoaders({ importLoaders: 2, modules: true, getLocalIdent: getCSSModuleLocalIdent, sourceMap: isEnvProduction && shouldUseSourceMap, }), },
配置变了以后要从新启动,否则没法看到效果。
1 安装
npm install antd-mobile --save
2 使用
入口页面 (html 或 模板) 相关设置:
引入 FastClick 而且设置 html
meta
(更多参考 #576)引入 Promise 的 fallback 支持 (部分安卓手机不支持 Promise)
<!DOCTYPE html> <html> <head> <!-- set `maximum-scale` for some compatibility issues --> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" /> <script src="https://as.alipayobjects.com/g/component/fastclick/1.0.6/fastclick.js"></script> <script> if ('addEventListener' in document) { document.addEventListener('DOMContentLoaded', function() { FastClick.attach(document.body); }, false); } if(!window.Promise) { document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>'); } </script> </head> <body></body> </html>
3 按需加载:
使用 babel-plugin-import(推荐)。
npm install babel-plugin-import --save-dev
在package.json中添加以下代码:
"plugins": [ [ "import", { "libraryName": "antd-mobile", "libraryDirectory": "es", "style": "css" } ] ]
而后只需从 antd-mobile 引入模块便可,无需单独引入样式。
// babel-plugin-import 会帮助你加载 JS 和 CSS import { DatePicker } from 'antd-mobile';
["@babel/plugin-proposal-decorators", {"legacy": true}]
修改成
["transform-decorators-legacy"]
"babel": {"plugins": [ + ["@babel/plugin-proposal-decorators", {"legacy": true}] ] },
... "eslintConfig": { // 默认继承 脚手架自带的 eslint 配置 "extends": "react-app", // 在这里扩展新增配置 "rules":{ // 设置规则,具体看官网用户指南下的规则文档 "eqeqeq": "off" } }
参考文档:http://www.javashuo.com/article/p-qvosdpgq-he.html https://www.jianshu.com/p/fa79cbfa6c6c
https://blog.csdn.net/qq_36709020/article/details/80275602
http://www.javashuo.com/article/p-gqqqnlju-cz.html https://ant.design/docs/react/use-with-create-react-app-cn