新建一个项目
1 2 3 4 5 6 7 8 9
| npm install -g create-react-app create-react-app my-app cd my-app npm i npm start # 或者,npm 5.1版本以上自带npx,以下官方推荐 npx create-react-app my-app cd my-app npm start
|
暴露配置文件
1 2
| # 暴露配置文件,输入yes就好 npm eject
|
下载依赖
1 2 3 4 5 6 7 8 9 10 11 12
| # scss依赖 npm install sass-loader node-sass --save-dev # 如果node-sass下载不下来的话,即node-sass安装失败使用: npm install --save node-sass --registry=https://registry.npm.taobao.org --disturl=https://npm.taobao.org/dist --sass-binary-site=http://npm.taobao.org/mirrors/node-sass # 说明 --registry=https://registry.npm.taobao.org 淘宝npm包镜像 --disturl=https://npm.taobao.org/dist 淘宝node源码镜像,一些二进制包编译时用 --sass-binary-site=http://npm.taobao.org/mirrors/node-sass 这个才是node-sass镜像 # ant-design npm install antd --save # 按需加载的依赖 npm install babel-plugin-import --save
|
配置webpack参数
scss
在config 里面的webpack.config.dev.js和webpack.config.prod.js里面,前面一个是开发的配置文件,后面的是生产时的配置文件
1 2 3 4 5
| 大约160行左右 # 第一处是: test: /\.css$/ 变成 test: /\.s?css$/ # 第二处是: {loader: require.resolve('sass-loader')}
|
之后你随便新建一个a.scss ,import “路径/a.scss”就可以了
缺点就是css代码会是全局的,一个人开发还好,多人的话,css命名冲突就很难受了,css-moudle是一种解决方案,但是我不怎么喜欢,我个人推荐可以用下style-component
css-moudle阮一峰
style-component
ant-design
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| # 修改babel配置,在package.json里面 # 装饰器的包:npm i babel-plugin-transform-decorators-legacy --D # 1.按需加载,让nodejs支持最新的语法,装饰器 # package.json里面不能写注释,记得删掉 "babel": { "presets": [ "react-app", [ "env", { "targets": { "node": true } } ] ], "plugins": [ [ "import", { "libraryName": "antd", "libraryDirectory": "es", "style": "css" } ], "transform-decorators-legacy" ] }, "proxy": "http://localhost:8888",
|
之后就ok了。你引入一个ant的组件试试就知道了
结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| # 导入 import { Button } from 'antd'; import React from 'react' import "./msgCircle.scss"; class MsgCircle extends React.Component { render() { return ( <div className="msg-circle"> <Button type="primary">Primary</Button> </div> ) } } export default MsgCircle; # 有人说为什么不用导入css,应为前面已经配置了按需加载
|
如果我又想用antd的主题怎么办
这里就给一个官方的解决方案
传送门
注意
修改配置文件后要重新npm start一下的
- 若配置装饰器后,发现
vscode
有红色波浪线,解决方法1 2 3 4 5 6 7
| # 新建一个tsconfig.json,内容如下 { "compilerOptions": { "experimentalDecorators": true, "allowJs": true } }
|
链接mongodb,后端node
梦想还是要有的,万一实现了呢
1 2 3 4 5 6 7
| # 在根目录新建一个server cd server # init后就会生成一个package.json,记录你每次安装的包 npm init # 为什么把模块装在server里面,装在外面的package.json不好吗,可以啊,不过我喜欢分开 npm i bluebird express mongoose nodemon --save mkdir server.js
|
准备启动后端了,链接mongodb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| const express = require('express'); const mongoose = require('mongoose')
const app = express();
app.use('/', function (req, res) { return res.json('hello world') })
mongoose.Promise = require('bluebird');
try { mongoose.connect('mongodb://localhost/test', { }) } catch (error) { console.log(error) } mongoose.connection .once('open', function () { console.log('mongoose connection') }) .on('error', function (error) { throw error; })
app.listen(8888, () => { console.log("服务开启在8888"); })
|
前面代理的端口要和后端启动的端口一致的
修改package.json
1 2 3 4
| # nodemon 就是你不用每次再去手动node server.js了,他会自动的帮你的(在外层的package.json) "scripts": { "server": "nodemon server/server.js" },
|
express怎么不是es6的语法?
1 2 3 4 5 6 7
| # 那就实现一下 # 用babel-cli npm i bebel-cli --save 修改scripts命令 "server": "NODE_ENV=test nodemon --exec babel-node server/server.js" # 不指定babel-node的话,默认是node # 之后你把里面的require改成import是不会报错的
|
mongodb 存储配置
- 默认你已经安装好mongodb,配好mongodb的环境变量,不配也没关系,多打几个路径而已
- 在某一盘符下新建一个test(名字随意),里面新建data,etc,logs三个文件夹
- data是存放数据的,etc是配置文件,logs是日志
- 在etc下新建mongo.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| # 内容范例 # 数据库路径 (你自己的路径) dbpath=/home/skl/Desktop/test/data # 日志输出文件路径 logpath=/home/skl/Desktop/test/logs/mongodb.log # 错误日志采用追加模式,配置这个选项后mongodb的日志文件会追加到现有的日志文件,而不是重新创建一个文件 logappend=true
# 过滤一些无用的日志 quiet=false
# 启动日志文件,默认启动 journal=true
# 端口号,默认是27017 port=27018
|
- 需要注意的是:linux和window的文件分隔符是不一样的,pwd打一下就知道了
- 在etc文件里面运行 mongod –config mongo.conf (指定配置文件)
启动server.js前先链接数据库 ,在etc文件里面运行 mongod –config mongo.conf (指定配置文件)
启动
访问localhost:8888,会出现
传送门 项目放github上了,可以自己查看