摘要:可能在项目正式上线的时候才需要发布配置单文件入口版本新建一个和开发环境不同的是,入口和出口。相应的在的源也要进行修改。加载模块发布配置多文件模式库最好就不要打包进来。因为一般库都是不会改动的。所以这里就要进行库的分离。
react-js开发环境
开始一个项目时间:2016.3.19-12:29
作者:三月懒驴
基于:react版本:0.14
基于:babel版本:6
相关代码:github
npm init安装webpack
npm install webpack --save-dev项目目录(demo架构)
- /app - main.js - component.js - /build - bundle.js (自动生成) - index.html - webpack.config.js - package.json设置webpack.config.js
var path = require("path"); module.exports = { entry:path.resolve(__dirname,"app/main.js"), output:{ path:path.resolve(__dirname,"build"), filename:"bundle.js" } };
在package.json里面预设这个命令去启动打包功能
"build":"webpack"课间练习
//component.js "use strict" module.exports = function(){ var a = "hello word" return a; }
//main.js "use strict" var component = require("./component.js"); document.body.innnerHTML = component();使用webpack-dev-server:监听代码自动刷新!
npm install webpack-dev-server --save-dev
在package.json里面配置webpack-dev-server
"dev":"webpack-dev-server --devtool eval --progress --colors --hot --content-base build" //webpack-dev-server 创建一个服务器8080端口的 //devtool eval --为你的代码创建源地址,可以代码快速定位 //progress --显示进度条 //colors --命令行带颜色 //content-base build --指向设置的输出目录 //一旦启动这个就会用服务器去监听代码文件的变化,从而每次变化都自动合并
启动自动刷新功能
//配置在webpack.config.js的入口 entry:[ "webpack/hot/dev-server", "webpack-dev-server/client?http://localhost:8080", path.resolve(__dirname,"app/main.js"); ]课堂练习
1. npm run dev 启动服务器 2. 打开浏览器->http://localhost:8080 3. 修改一下前面的课堂练习时候写的代码中的compnent.js的return的东西配置react / babel
//安装react npm install react --save npm install react-dom --save //安装babel-loader npm install babel-loader --save-dev npm install babel-core --save-dev npm install babel-preset-es2015 --save-dev //支持ES2015 npm install babel-preset-react --save-dev //支持jsx npm install babel-preset-stage-0 --save-dev //支持ES7 //但是还不够 npm install babel-polyfill --save /* Polyfilla是一个英国产品,在美国称之为Spackling Paste(译者注:刮墙的,在中国称为腻子).记住这一点就行:把旧的浏览器想象成为一面有了裂缝的墙.这些[polyfills]会帮助我们把这面墙的裂缝抹平,还我们一个更好的光滑的墙壁(浏览器) */ npm install babel-runtime --save npm install babel-plugin-transform-runtime --save-dev /*减少打包的时候重复代码,以上要注意是放在dev还是非dev上!*/
配置babel
//在入口添加polyfill entry[ "babel-polyfill", "webpack/hot/dev-server", "webpack-dev-server/client?http://localhost:8080", path.resolve(__dirname,"app/main.js") ] //在webpack.config.js的module.exports = {}里面增加 module:{ loaders:[{ "loader":"babel-loader", exclude:[ //在node_modules的文件不被babel理会 path.resolve(__dirname,"node_modules"), ], include:[ //指定app这个文件里面的采用babel path.resolve(__dirname,"app"), ], test:/.jsx?$/, query:{ plugins:["transform-runtime"], presets:["es2015","stage-0","react"] } }] }课堂测试
//component.js "use strict" import React from "react" class Component extends React.Component{ render(){ returnHelllo World} }
//main.js "use strict" //注意!这里引入了新的东西 import "babel-polyfill" import React from "react" import {render} from "react-dom" import Component from "./component" let main = function(){ render(加入CSS / iamge / font,document.getElementById("main")); } main();
// 这里先留个坑!因为暂时来说还是认为外链出来适合现在这个时代。可能在项目正式上线的时候才需要发布配置:单文件入口版本!
//新建一个webpack.production.config.js //in package.json "deploy": "NODE_ENV=production webpack -p --config webpack.production.config.js" //in webpack.production.config.js //和开发环境不同的是,入口和出口。相应的在HTML的JS源也要进行修改。 var path = require("path") var node_module_dir = path.resolve(__dirname,"node_module"); module.exports = { entry:[ "babel-polyfill", path.resolve(__dirname,"app/main.js"), ], output:{ path:path.resolve(__dirname,"build"), filename:"app.js" }, module:{ loaders:[ { loader:"babel-loader", //加载babel模块 include:[ path.resolve(__dirname,"app"), ], exclude:[ node_module_dir ], test:/.jsx?$/, query:{ plugins:["transform-runtime"], presets:["es2015","stage-0","react"] } }, ] } }发布配置(多文件模式)
库最好就不要打包进来。因为一般库都是不会改动的。所有用户load一次就好了。所以这里就要进行库的分离。
依旧是:webpack.production.config.js
var path = require("path"); var webpack = require("webpack"); var node_module_dir = path.resolve(__dirname,"node_module"); module.exports = { entry:{ app:[path.resolve(__dirname,"app/main.js"),], react: ["babel-polyfill","react","react-dom"] }, output:{ path:path.resolve(__dirname,"build"), filename:"app.js" }, module:{ loaders:[ { loader:"babel-loader", //加载babel模块 include:[ path.resolve(__dirname,"app"), ], exclude:[ node_module_dir ], test:/.jsx?$/, query:{ plugins:["transform-runtime"], presets:["es2015","stage-0","react"] } }, ] }, plugins: [ new webpack.optimize.CommonsChunkPlugin("react", "react.js") ] }
预计学习搭建时间:1小时!
恭喜你!全部课程完成,接下来的话,我们就要开始react的课程了!本课程如果还有什么不懂的话,可以在评论中进行讨论。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/79093.html
摘要:使用包管理工具,基于构建工具,搭建开发环境由于一些软件安装跟系统环境相关,故这里查看本文档,需要根据自己的系统环境,选择相对应的系统版本。 使用Yarn包管理工具,基于Webpack构建工具,搭建React开发环境 showImg(https://segmentfault.com/img/remote/1460000019833533?w=560&h=310); 由于一些软件安装跟系统...
摘要:在这篇文章中我们开始利用我们之前所学搭建一个简易的开发环境,用以巩固我们之前学习的知识。 文章首发于我的github及个人博客,github请看https://github.com/huruji/blo...,转载请注明出处。 在这篇文章中我们开始利用我们之前所学搭建一个简易的React开发环境,用以巩固我们之前学习的Webpack知识。首先我们需要明确这次开发环境需要达到的效果:1、...
摘要:当属性是一个回调函数时,函数接收底层元素或类实例取决于元素的类型作为参数。 手挽手带你学React入门第一期,带你熟悉React的语法规则,消除对JSX的恐惧感,由于现在开发中都是使用ES6语法开发React,所以这次也使用ES6的模式进行教学,如果大家对ES6不熟悉的话,先去看看class相关内容吧,这里我也慢慢带大家一步一步学会React。 视频教程 视频教程可移步我的个人博客:h...
摘要:的配置其中就不多说会解决更改组件的时热更新直接刷新页面的问题。 工欲善其事,必先利其器。单页面应用的开发和生产环境涉及文件的编译、压缩、打包、合并等,目前前端最流行的莫过于 webpack 。为了深入了解 webpack 以及其相关插件,我们决定不采用脚手架,自己来搭建基于 webpack 的开发和生产环境。 基础环境 nodejs的安装: 移步官网 建议使用nvm来管理nodejs...
摘要:官方文档中文翻译构建用户界面的库。官方文档建议学习时以官方文档为准,中文翻译或者第三方作者的教程可以帮助你理清思路会用到的重要知识点我也会进行简明的解释,如遇到错误或者不理解的内容,欢迎实时指出。 前言 前面提到前端大统一的概念,如果感兴趣,欢迎说说自己的看法,点击前往。Web前端框架层出不穷,不可能面面俱到,这里给个小建议: 如果对Weex App感兴趣,应该选择vue框架; 如果...
阅读 2335·2021-11-15 11:38
阅读 3544·2021-09-22 15:16
阅读 1187·2021-09-10 11:11
阅读 3156·2021-09-10 10:51
阅读 2920·2019-08-30 15:56
阅读 2774·2019-08-30 15:44
阅读 3185·2019-08-28 18:28
阅读 3525·2019-08-26 13:36