zoukankan      html  css  js  c++  java
  • react+redux+webpack+git技术栈

      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:WindowsSystem32driversetchosts-------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两个参数解决
  • 相关阅读:
    关于ActionScript中那些你不知道的事情
    Flash Player 11 Stage3D学习大杂烩
    Qt 控制台输入输出(支持中文)
    Redis消息发布订阅的稳定性验证结论
    C++11 Lambda表达式(匿名函数)用法详解
    vue中“:”、“.”、“@”意义
    QT中printf输出不同步的解决办法
    QT5中使用SQLite
    QT 调用user32.dll移动鼠标
    10分钟学会Visual Studio将自己创建的类库打包到NuGet进行引用(net,net core,C#)
  • 原文地址:https://www.cnblogs.com/yiyi17/p/7522037.html
Copyright © 2011-2022 走看看