1 一、git bash here
2 mdkr
3 cnpm init -y
4 ls -a
5 ls -l
6 ls -la隐藏的也可查看
7 cat package.json
8 二、npm
9 npm i webpack-dev-server -g
10 全局:任何目录运行
11 本地:本地需要调用附带的插件
12 npm list
13 npm list -g
14 npm uninstall supervisor -g 全局删除
15 npm remove supervisor -g全局删除,彻底卸载,再安装
16 npm i supervisor --save-dev||-D 开发依赖:项目上线不需要的,例如:babel、webpack
17 npm i jquery -S项目依赖-----dependencies
18 奇数非稳定版本
19 cnpm info jquery
20 升级---直接修改配置文件
21 cnpm update
22 ^表示第一个版本号不变后面取最高
23 ~表示第一第二个约定好
24 *取最新版本
25 --------------------------------版本升级问题:删除后修改json,在安装,mac上可能可以
26 npm outdated
27 rm -rf强制删除所有
28 npm cache clear清除缓存安装
29 nrm ls npm源
30 nrm test
31 nrm use taobao ----切换源
32 npm脚本
33 npm run dev
34 三、git工具
35 本地仓库
36 远端仓库-remote
37 gitLab/github---ssh
38 主干发布、分支开发
39 -----------------配置远程库---------------------------
40 gitignore----不上传服务器的文件夹
41 git config --global user.name
42 git config --global alias.ci commit----- 起commit别名ci
43 ---------------clone下来-------------------
44 git clone ssh/https-----https公开自己代码
45 git st状态
46 ---------------查看状态run起来----------------------------------------
47 git add .
48 git ci -am "asds"添加
49 git push
50 .........................创建分支..................................
51 git branch
52 git branch name创建分支不切换
53 git checkup -b name-2017-0223-bao-bugfix
54 git co -b name-2017-0223-bao-bugfix创建分支并切换
55 修改文件
56 git ci -am "adsd"
57 git push --set-upstream origin name分支上传
58 ----------------------merge获取其他分支----------------------------------
59 在本地创建多个分支
60 git branch -r显示远端分支
61 open index.html
62 git co master------------主分支提交master
63 git merge origin/name 分支提交后在master上merge,master与分支合并做修改,保存本地库
64 git ci -am "merge-name"
65 git push发布
66
67 git log查看历史版本
68 $ git reset --hard 3628164
69 ---------------------merge master-----------
70 其他分支与master同步
71 git checkout master----切换分支到master执行
72 git pull----即可完成master更新同步
73 git merge master??
74 git rebase master-----保持与本地一致
75 用rebase合并主干的修改,如果有冲突在此时解决
76 ---------------------------------------------------
77 git br -a可看到远端所有分支
78 clone后新创建的分支拿到本地仓库方法:
79 git fetch origin newname
80 git br
81 git co newname
82 git br-----即可拿到
83 open index.html
84 --------------------------
85 权限设置
86 Collaborators:添加Add collaboator
87 --------------总结----------------------
88 管理员merge----开发人员pull即可看到项目进度!
89
90
91 三、***********************webpack*************************
92 1、commonJS
93 2、require('./name'),斜杠-----本文件夹
94 require('name'),-----node_modules里
95
96 ***********************布局*************************
97 build--------编译后发布代码文件夹
98 src-------------开发文件夹
99 |---component_dev-------
100 |---script-------js
101 -----|---app.js
102 -----|---component---组件
103 -----|---redux
104 |----store.js
105 |---index.js
106 |---style---------css
107 |----index.ejs------模板改变也会生成新的hash值
108 <title><%= htmlWebpackPlugin.option.title%></title>
109 index.html
110 package.json
111 webpack.config.js
112 .git
113
114 css、js、html,其他例如第三库CDN
115 img呢?服务器?
116 ***********************webpack.json*************************
117 'script':{
118 "build":webpack-dev-server
119 }
120 ***********************webpack.config.js*************************
121 后端拿到html
122 前后端两个域名?run到一起
123 var webpack=require('webpack')
124 var htmlWebpackPlugin=require('html-webpack-plugin')--------引入插件
125 var ExtractTextPlugin=require('extract-text-webpack-plugin')
126 var openBrowserPlugin=require('open-browser-webpack-plugin')
127 mudule.exports={
128 entry:{--------------可单页面入口。可多入口文件
129 page1:'./src/app1.js',
130 page2:'./src/app2.js'
131 },
132 output:{----------------js文件和其他生成的文件
133 path:__dirname+'/build',------__dirname物理路径,后面build没有点,
134 //filename:'app_[hash].js'---上线用
135 filename:'app.js'---开发用
136 //filename:'[name]_[hash].js'-----------生成多个js
137 },
138 devServer:{
139 contentBase:'./build'-----------访问目录下的index.html--把index.html放到build里
140 host:"localhost"---------域名
141 port:'9000'----端口
142 historyApiFallback:false -------------是否使用H5的historyApi
143 proxy:{-----------代理
144 '/api':{----------------有api即认为访问后端,例如'/api/list.php'
145 target:'http://localhost:3000'---地址栏有/api即跳到:3000
146 pathRewrite:{'^/api',''}------------干掉'./api'
147 changeOrigin:true---------------------跨域,非本地跨域
148 }
149
150 }
151
152 },
153 module:{
154 loaders:[
155 // {-->非抽离声明
156 // test:/\.css$/,------css打包到js
157 // loader:'style-loader!css-loader'
158 // },
159 {
160 test: /\.css$/,
161 loader: ExtractTextPlugin.extract({
162 fallback: 'style-loader',
163 use: 'css-loader'
164 })
165 },
166 // {
167 // test:/\.scss$/,------css打包到js
168 // exclude: /node_modules/,--------------刨除哪个!!!
169 // loader:'style-loader!css-loader!sass-loader'
170 // }, -->非抽离声明
171 {
172 test:/\.scss$/,
173 loader:ExtractTextPlugin.extract({--------抽离声明
174 fallback:'style-loader',------------------------解析最后一个loaderextract,这个案例是style,解析的是css
175 use:'css-loader!sass-loader'----------------不要重复声明style-loader
176 })
177 },
178 {
179 test: /\.js$/,
180 exclude: /node_modules/,--------------刨除哪个!!!
181 loader: 'react-hot-loader!babel-loader'---------------react热替换,厉害了
182 }
183 ]
184 },
185 plugin:[
186 new htmlWebpackPlugin({--------------html文件自动生成插件实例化,有自己的默认模板
187 filename:'index.html',-----------------输出的文件名,会生成带有hash值的js
188 template:'./src/index.ejs',------------模板文件
189 title:'豆瓣电影'
190 }),
191 new ExtractTextPlugin({-------------------解析抽离css并会在index.html加link标签
192 filename:'app_[hash].css',----------------可加版本号
193 disable:false,-------true关闭
194 allChunks:true---------------入口文件
195 }),
196 new webpack.optimize.UglifyJsPlugin({
197 compress:{----------------压缩,最后上线需要一次
198 warning:false-------是否显示错误信息,false不显示
199 },
200 output:{
201 comments:false----------是否需要注释,false不需要
202 }
203 }),
204 new openBrowserPlugin({ url: 'http://localhost:8080' })------------------webpack 启动后自动打开浏览器插件!!!!1!!厉害了
205 ],
206 externals:{------------------抽离js第三方类库
207 "react":"window.React",----------配置后不会打包react,手动打包即可,包特别大
208 "react-dom:"window.ReactDOM"
209 "react-router":"window.ReactRouter"
210 "redux":"window.Redux"
211 'react-redux':'widow.ReactRedux'
212 }
213 }
214
215 ELEMENT解析与源码不同
216 源码---是后台ng、rg之后的
217
218 css/js版本控制,服务器缓存原来版本----回滚---使用构建工具
219 哈希值hash-----根据内容算法生成来css、js控制版本
220
221 npm install html-webpack-plugin---------------------html自动生成插件
222 npm i sass-loader -D
223 npm react-hot-loader -D---------------------react热替换
224 npm i babel-preset-react -D----------------react预设
225 npm i extract-text-webpack-plugin -D-----------------抽离文本插件
226 npm i react-dom -S--------------项目依赖
227 npm i open-browser-webpack-plugin---------------
228 require---Es5
229 import from ---Es6
230
231 1、const Index='sd'
232 export {Index}
233 import {Index} from index.js
234 2、const Index='sd'
235 export {Index as defult}
236 import Index from index.js---------------Index花括号就不用了
237 ***********************babel编译器安装*************************
238 babel-core---------------babel-loader调用
239 babel-loader------------编译
240 babel-preset-es2015 -D-----------编译es6
241
242 react-hot-loader!babel-loader----------------------react热替换
243
244
245 ***********************babel*************************
246
247 jsx------babel解析,webpack直接可以识别Es6语法,不过jsx还是需要babel来解析,babel还可以解析Es7位es5
248
249 {
250 "preset":["es2015","react","stage-0"]
251 }
252 ***********************packge.json*************************
253
254 "babel-polyfill":"^6.23.0"---------------------低版本andrio不支持则降低版本,很重要!!
255 四、***********************mock数据*************************
256 npm i json-server -g-----------安装
257 json-server src/mock.js--------启动服务,启动mock.js文件
258 mock.js
259
260 var list = require('./list.json')
261 module.exports = function() {
262 return {
263 'list.php': list
264 }
265 }
266 访问localhost:3000
267
268 在fetch里fetch("/api/kind2.php").then(res=>res.json()).then(res=>{})
269 --------------------------------
270 componentDidMount() {
271 fetch('/api/list.php')
272 .then(response=>response.json())
273 .then(res=>{
274 // console.log(res);
275 this.setState({
276 name: <div>{res.name}</div>
277 })
278 })
279 }
280
281 五、reset.css公共样式
282
283
284
285 六、搭建页面结构
286 andriod
287 ios
288 woff、ttf-------------多次设置font-face会merge并不会覆盖
289 //CDN简写
290 @font-face{
291 font-family:yofont;
292 src:url(/icofont/iconfont.woff) format("woff"),
293 url(/iconfont/iocnfont.ttf) format('truetype')
294 }
295 1像素线、、、、、、、、、、、、、、、
296 空元素相对定位
297 伪元素:绝对定位
298 根据dpr缩放
299 七、react-router
300
301 "react-router": "^3.0.2"--------------用4.0版本会没有ReactRouter.min.js,引用react-router.min.js会报Cannot read property 'location' of undefined
302 引用ReactRouter.min.js
303
304 react-router.min.js-------------一般用后端开发
305
306 <Link to=''/>
307 <Router>
308 <IndexRoute component={}/>
309 <Route path='' component={}/>
310 </Router>
311 抽离后要在ejs里引文件,否则找不到
312 父组件获得子组件的参数------------------
313 子组件通过this.props.onClickHandler.bind(this,"abc")
314 -------------onClickHandler是父组件定义的方法,abc是子组件的参数,通过函数传给父组件
315 也可以-----------子组件设置this.state={data:'abc'},,父组件在设置ref="abc",在ditmount中this.refs.state.data
316 子组件获得父组件的属性方法----------父组件设置属性与方法,子组件this.props.name获得
317 八、API
318 mock数据
319 share.baidu.com----------------------百度分享
320 mern----------------------react-cli
321 九、组件YO
322 npm i babel-preset-stage-0 -D
323 十、redux
324 onEnter事件可以检测路由切换
325 组件渲染从内向外
326 Didmountupdate中也可以检测路由切换
327 Index中包含自己及切换的子路由
328 cnpm i react-redux -S
329 *************************************十、redux***********************************************
330 拷贝redux,react-deux
331 ejx要添加
332 connect ----------react-redux
333 connect(mapStateToProps,mapDispatchToprops)(Index)
334
335
336 路由
337 引入{Provider}
338 {store}
339 <Provider store={store}>
340
341
342
343 </Provider>
344 某个组件状态需要共享
345 某个状态需要在任何地方都能拿到
346 一个组件需要改变全局状态
347 一个组件需要改变另一个组件的状态
348 **************************************YO框架**********************************************
349 base:设置html里的font-size--------------------YO框架以640的iphone5做的,
350 iphone6,1vw=0.26666666px=100/375
351 **************************************history*************************
352 browserhistory:h5的,浏览器就不会有#了
353 browserhistory.goBack();goFoward()
354 改用browserhistory,用事件定义跳转,hashhistory Link方法就不适用了
355 ******************************路由传参***************************************
356 path="/list/:type"-------------设置动态路由
357 取type方法:this.props.params
358 ************************touch-action**************************
359 touch-action:none
360
361 手机里无webpack,无法调用线上数据
362 1、放json里,
363 2、放服务器,装ngix,方向代理
364 3、放数据库。
365
366
367 ************************nginx**************************
368 http://nginx.org/en/download.html下载地址
369 homebrew安装moc ------------
370
371
372 start nginx
373 nginx -s stop
374
375 gzip on压缩传输
376 pwd
377
378
379 nginx的使用
380 1、修改conf/nginx.conf
381 把nginx.conf里的server下的全部注释掉,(35-79行)
382 把gizp on解注释,添加 include ../conf.d/*.conf;
383 2、建conf.d文件夹,建工程名的配置文件,配置如下:
384 server{
385 listen 80;----一般都是80
386 server_name localhost;
387 root E:/lianlianLife/dev/build;
388 }
389 3、启动nginx,访问localhost即可
390 ************************nginx**************************
391 ************************前后端联调**************************
392 Postman
393
394 HostAdmin App----C:\Windows\System32\drivers\etchosts-------host文件位置
395 127.0.0.1 ----------- localhost-------域名解析--先走本地
396 ip计算识别,一个ip可以有多个域名
397 如何清除DNS缓存
398 src="http://www.douban.com/libs/"------index.html配置
399 ping www.baidu.com得到网页ip
400 ip+域名设置--------------得到远端
401 ipconfig/flushdns-----------刷新DNS解析缓存
402 跨域:
403 cors、
404 jsonp
405 window.name
406 nginx方向代理
407
408 location /api{
409 proxy_pass http://localhost:3000
410 }
411
412 modal---组件
413 stuo nginx
414 nginx杀掉进程的方法----taskkill /fi "imagename eq nginx.EXE" /f,可以杀死名字为
415 nginx.EXE的所有进程
416 http://www.cnblogs.com/CoreXin/p/5566607.html
417
418
419 http://blog.csdn.net/u010977147/article/details/53489160l两个参数解决