当前位置: 首页 > news >正文

phpstudy搭建本地网站网站建设公司那家好

phpstudy搭建本地网站,网站建设公司那家好,校园网网络设计报告,wordpress是开源在开发react单页面的时候无可避免的要使用到webpack打包#xff0c;今天就从零开始搭建一个react的开发环境。 需要实现的功能有#xff1a; 使用Babel编译ES6编译.jsx文件实现热更新编译CSS预处理文件Less#xff0c;CSS后处理文件PostCSS提取公共的CSS样式到一个公共的文…在开发react单页面的时候无可避免的要使用到webpack打包今天就从零开始搭建一个react的开发环境。 需要实现的功能有 使用Babel编译ES6编译.jsx文件实现热更新编译CSS预处理文件LessCSS后处理文件PostCSS提取公共的CSS样式到一个公共的文件中压缩js减小js文件的大小抽取公共的第三方js库并且打包的时候第三方js文件的名称不会变方便客户端缓存压缩img等资源文件过小的资源文件就编程dataURL的形式直接写在CSS中可以访问静态的资源文件图片等代理 一、完成基本的目录结构与基本打包 新建一个reactWebpack文件夹进入该文件夹并执行 npm init 初始化一个项目生成package.json文件新建如下目录结构 reactWebpack -- dist(打包后文件) -- src(业务源码)|-- index.html|-- app.js -- webpack.config.js(webpack配置文件) -- .babelrc(babel配置文件) -- package.json在reactWebpack文件夹下安装以下依赖 npm install -D webpack3.11.0 如果全局环境下没有webpack那么建议也全局安装 npm install -g webpack3.11.0 修改webpack的配置文件 webpack.config.js 如下 var path require(path);module.exports {entry: ./src/index.js,output: {path: path.resolve(__dirname, dist), // 这里需要绝对路径filename: [name].js} }到这一步就可以使用webpack打包项目中依赖的js了但是使用jsx和目前浏览器还不能完美支持的ES6语法还需要转译将ES6等新的特性和jsx转换成ES5语法让浏览器不支持的特性得以支持。 安装依赖 npm install babel-core babel-loader babel-preset-react babel-preset-2015 修改webpck.config.js加上对js文件处理的loader部分 var path require(path);module.exports {entry: ./src/index.js,output: {path: path.resolve(__dirname, dist),filename: [name].js},module: {rules: [{test: /\.js|\.jsx$/, use: [babel-loader], exclude: path.resolve(__dirname, node_modules)}]} }修改babel配置文件.babelrc文件 {presets: [es2015, react] }配置打包html模板先安装依赖 npm install -D html-webpack-plugin 修改webpack.config.js文件如下 var path require(path); var HtmlWebpackPlugin require(html-webpack-plugin);module.exports {entry: ./src/index.js,output: {path: path.resolve(__dirname, dist),filename: [name].js},module: {rules: [{test: /\.js$/, use: babel-loader, exclude: path.resolve(__dirname, node_modules/)} ]},plugins: [new HtmlWebpackPlugin({template: ./src/index.html,filename: index.html,inject: true})] }安装项目依赖react等 npm install --save react react-dom react-router-dom 修改index.html和app.js文件 index.html 如下 !DOCTYPE html html headmeta charsetutf-8 /title/title /head body div idcontainer/div /body /html app.js 如下 import ReactDOM from react-dom import React from reactReactDOM.render(div我是组建/div, document.getElementById(container)) 到这里基本的目录结构已经搭建完成并且可以在根目录下执行webpack进行打包。打包完成后在dist文件夹下会有index.html和app.js文件。 二、配置webpack热加载 安装如下依赖 npm install -D webpack-dev-server2.7.1 注意是2.7.1版本在根目录下添加 dev.conf.js 文件 var webpack require(webpack) var WebpackDevServer require(webpack-dev-server)var config require(./webpack.config.js) var port 8899 var host localhost var options {contentBase: ./dist,hot: true,host: host,port: port // 这里最好加上port }WebpackDevServer.addDevServerEntrypoints(config, options) var compiler webpack(config) var server new WebpackDevServer(compiler, options)server.listen(port, function(){console.log(host : port 启动成功) })修改webpack.config.js文件添加了两个插件 var path require(path) var webpack require(webpack) var HtmlWebpackPlugin require(html-webpack-plugin)module.exports {entry: ./src/app.js,output: {path: path.resolve(__dirname, dist),filename: [name].js},devtool: inline-source-map, // 生成map映射方便定位错误module: {rules: [{test: /\.js$/, loader: babel-loader }]},plugins: [ new webpack.NamedModulesPlugin(), // 新加new webpack.HotModuleReplacementPlugin(), // 新加new HtmlWebpackPlugin({template: ./src/index.html,path: path.resolve(__dirname, dist),chunks: [main]})] } 到这里开发环境配置完成在根目录下运行 node dev.conf.js 即可启动一个开发服务器。 三、调整目录结构 在上面已经完成可webpak开发环境的配置下面要配置打包环境。在开始配置打包环境之前需要调整一下目录的结构。因为在开发环境dev和打包build上线的环境有一部分不同但是基础部分又是相同的所以需要合理的计划一下。 主要分为三个配置文件 dev.conf.js原webpack.config.js一部分内容、build.conf.js和base.conf.js原大部分webpack.config.js内容这三个文件会被放在新建的build文件夹下。 调整后的文件目录如下 reactWebpack--build|--base.conf.js|--dev.conf.js|--build.conf.js-- dist(打包后文件)-- src(业务源码)|-- index.html|-- app.js-- .babelrc(babel配置文件)-- package.json 修改base.conf.js文件如下 var path require(path) var webpack require(webpack) var HtmlWebpackPlugin require(html-webpack-plugin)function resolve(dir){return path.resolve(__dirname, ../, dir) }module.exports {entry: ./src/app.js,output: {path: resolve(dist),filename: [name].js},devtool: inline-source-map,module: {rules: [{test: /\.js$/, loader: babel-loader,exclude: resolve(node_modules)}]},plugins: [ new HtmlWebpackPlugin({template: ./src/index.html,path: resolve(dist),chunks: [main]})] }安装依赖 npm install -D webpack-merge并修改dev.conf.js文件如下 var webpack require(webpack) var WebpackDevServer require(webpack-dev-server) var merge require(webpack-merge)// 开发环境配置这部分配置在打包的时候是不需要的 var webpackDevConfig {plugins: [new webpack.NamedModulesPlugin(), new webpack.HotModuleReplacementPlugin()] }// 下面是服务器配置 var config merge(webpackDevConfig, require(./base.conf.js)) var options {contentBase: ../dist,hot: true,host: localhost } var port 8899WebpackDevServer.addDevServerEntrypoints(config, options) var compiler webpack(config) var server new WebpackDevServer(compiler, options)server.listen(port, function(){console.log(启动成功) }) 上面的目录结构已经调整完成在根目录下运行 node build/dev.conf.js 即可开启开发服务器。 四、配置完善的webpack打包部分 webpack是按照依赖打包的但是如果不处理的话所有的依赖会被打包到一个文件中也就是说无论是第三方依赖还是自己写的业务逻辑都会在同一个打包好的文件main.js中。 这会有很多问题例如 不方便客户端缓存客户端肯定会缓存main.js但是如果我们修改了业务代码然后打包上线这个main.js名称没有改变而内容却是修改了并且客户端缓存了main.js所以不一定会去获取新的main.js这样就导致了新的代码并没有及时的被使用没有将第三方代码和业务代码分离分离后第三方代码是可以让客户端缓存以节省加载时间因为我们修改的是自己的业务代码上面的配置还没有去除注释、警告和压缩代码以减小代码体积 压缩代码JS代码 修改build.conf.js文件如下 var path require(path) var webpack require(webpack) var merge require(webpack-merge) var baseConfig require(./base.conf.js)var buildConfig {plugins: [new webpack.DefinePlugin({process.env: {NODE_ENV: JSON.stringify(production)}}),new webpack.optimize.UglifyJsPlugin() // 新加] }module.exports merge(buildConfig, baseConfig) 在根目录下执行webpack build/build.conf.js即可看到打包出的文件会小很多。 提取第三方代码单独打包 修改代码如下 var path require(path) var webpack require(webpack) var merge require(webpack-merge) var baseConfig require(./base.conf.js)var buildConfig {plugins: [new webpack.DefinePlugin({process.env: {NODE_ENV: JSON.stringify(production)}}),new webpack.optimize.CommonsChunkPlugin({name: vender, // 指定公共 bundle 的名称minChunks: function (module, count) {console.log(count)return (module.resource /\.js$/.test(module.resource) module.resource.indexOf(path.join(__dirname, ../node_modules)) 0)}}),new webpack.optimize.CommonsChunkPlugin({name: manifest, // 提取webpack的运行时代码chunks: [vender]}),new webpack.optimize.UglifyJsPlugin()] }module.exports merge(buildConfig, baseConfig)为文件名添加hash当修改的时候文件名发生变化让客户端及时获取变化的文件同时缓存没有改变的文件。 修改base.conf.js文件如下 var path require(path) var webpack require(webpack) var HtmlWebpackPlugin require(html-webpack-plugin)function resolve(dir){return path.resolve(__dirname, ../, dir) }module.exports {entry: ./src/app.js,output: {path: resolve(dist),filename: [name]-[chunkHash].js // 新加 chunkHash内容改变的时候chunkHash才会改变},devtool: inline-source-map,module: {rules: [{test: /\.js$/, loader: babel-loader,exclude: resolve(node_modules)}]},plugins: [ new HtmlWebpackPlugin({template: ./src/index.html,path: resolve(dist),chunks: [main]})] }因为加上了chunkHash新生成的文件不会覆盖老文件那么就会产生很多文件并不能立马找到目标文件。这时可以考虑先清空打包的目标文件夹dist 安装 npm install -D clean-webpack-plugin 修改 build/build.conf.js文件如下 var path require(path) var webpack require(webpack) var merge require(webpack-merge) var baseConfig require(./base.conf.js) var Clean require(clean-webpack-plugin)var buildConfig {plugins: [new webpack.DefinePlugin({process.env: {NODE_ENV: JSON.stringify(production)}}),new webpack.optimize.CommonsChunkPlugin({name: vender, // 指定公共 bundle 的名称minChunks: function (module, count) {console.log(count)return (module.resource /\.js$/.test(module.resource) module.resource.indexOf(path.join(__dirname, ../node_modules)) 0)}}),new webpack.optimize.CommonsChunkPlugin({name: manifest,chunks: [vender]}),new webpack.optimize.UglifyJsPlugin(),new Clean([dist]) // 新加] }module.exports merge(buildConfig, baseConfig) 待续。。。。。。。。。。。。。。。。。。。。。。。。。。。 后续1.CSS预处理器和后处理器的编译 2. 图片的加载 5. 跨域代理的配置 6. 依据react-router做代码分割 参考 ​ webpack中文文档 ​ vue-cli生成的webpack配置文件
http://www.sadfv.cn/news/303348/

相关文章:

  • 个人如何申请网站职业生涯规划大赛策划书
  • 河北建设厅网站怎么搜索文件网站的标志可以修改吗
  • 开公司可以在哪些网站做推广wordpress网站存放在
  • 网站 转成 微信小程序天津专门做网站的公司
  • 佛山网站定制开发专题网站策划书
  • 东莞哪里的网站建设效果好中国企业报官网
  • 湖北省住房和城乡建设厅门户网站网络推广沈阳
  • 东阳企业网站微商城建设wordpress球形标签
  • 长沙网站优化培训做公司网站哪家好重庆九龙坡区
  • 可以做数学题的网站企业网站每年的费用
  • 个人制作的网站网站上的图片怎么做
  • 做淘宝详情的网站phpcms如何做装饰网站
  • 为网站吸引流量的方法章丘做网站优化
  • iis 创建网站wordpress 快乐麻花
  • 江都区城乡建设局网站马局七牛镜像 wordpress
  • 网站域名后缀那个好销售管理app软件
  • 山东省建设厅官方网站怎么样海口小程序制作公司
  • 东营网站建设关键字排名问题老榕树智能建站软件
  • 网站无icp备案广州市官网网站建设多少钱
  • 榆林建设网站上海公司网站设计
  • 蓝冠在线网站建设做网站的公司是什么
  • 国外著名购物网站排名wordpress播放器安装
  • 建设公司网站需要准备什么仿微博网站模板
  • 河南开元建设有限公司网站自己做网站的费用
  • 网站建设-设计《网站建设与管理》论文
  • c 网站开发的好处营销型网站制作的方法
  • 绍兴网站推广排名江苏泰州seo网络优化推广
  • 做药品的电商网站有哪些网站后台上传图片显示运行错误为什么
  • 网站关键词如何做竞价专业的外贸建站公司
  • 优化网站搜索排名网站背景特效