zoukankan      html  css  js  c++  java
  • webpack

    新建一个目录叫webpack

    文件夹地址栏里输入cmd,要用webpack首先肯定是安装他

    首先进行全局安装cnpm install -g webpack(-g  是global全局安装)

    接下来一个命令cnpm install --save-dev webpack( --save-dev 是本地的目录的安装)

    安装成功以后文件将爱里面就会多出来一个目录和一个文件夹

    在根目录webpack下创建一个webpack.config.js的文件,里面写配置文件,然后再创建一个src和www文件夹(这个文件名是可以随便取的,这里src和www是习惯性取的文件名,src里面放的是自己编写的项目的相关代码,www里面是通过webpack生成的copy代码,这里也可以不创建www因为后面运行webpack会自动生成)

    然后在src下配置相关目录(scripts放js,styles放样式sass,images放图片等等,就是你项目里面应该有的东西,还有一个index.html)

    在scripts下面再创建一个common(放公共文件)的目录和一个index.js的文件

    再在common目录下面创建两个目录libs(放引用的相关类库),utils(放自己写的一些代码,由于要进行模块化开发要在这里面的文件进行接口暴露)

    关于上面说到的utils目录下面自己写的文件进行接口暴露的问题代码示例:

     1 //这里就是做一个模块化开发的示例
     2 //先在目录utils下dateUtil.js文件中暴露接口
     3 var DateUtil = {
     4     getDate:function(){
     5         return new Date().toLocaleDateString();
     6     }
     7 } 
     8 module.exports = DateUtil;//这里就是进行接口暴露
     9 
    10 var DateUtil = require('./common/utils/dateUtil');//这里在index.js下引用
    11 console.log(DateUtil.getDate());//如果console成功的话就说明接口暴露成功了
    12 
    13 
    14 //文件接口暴露示例
    15 //module.exports = DateUtil;
    16 //引入暴露接口的文件示例
    17 //var Swiper(变量名随便取) = require('这里写路径地址');
    18 //var DateUtil = require('./common/utils/dateUtil');

    styles目录也是一样的配置:

    如果你有引入iscroll,swiper之类的类库的话在common目录下就要引入这些类库的相关css样式:

    接下来就开始配置webpack.config.js文件,第一步就是将这个文件暴露,然后指定出入口文件,这里就是之前创建的src(出口文件)和www(入口文件):

     1 module.exports = {
     2     //入口文件
     3     entry:{
     4         app:__dirname + '/src/scripts/index.js'//__dirname是当前目录的意思
     5     },
     6 
     7     //出口文件(指明发布的地方)
     8     output:{
     9         path:__dirname + '/www',
    10         filename:'js/index.js'
    11     }
    12     //这里说白就是把src目录下的index.js文件copy到www目录下js下的index.js文件中
    13 }

    配置完这些就可以在cmd中运行webpack爽一把:

    然后你回www目录下查看就会发现目录下面多了一个webpack.config.js文件中指定的出口目录js而且目录下多了一个文件index.js:

    点开这个生成的js文件会看到之前测试模块化开发的DateUtil:

    接下来就是安装资源拷贝插件(cnpm install --save-dev copy-webpack-plugin),先在webpack.config.js中引入:

     1 var CopyWebpackPlugin = require('copy-webpack-plugin'); 

    再在cmd中输入cnpm install --save-dev copy-webpack-plugin:

    这里顺便看一下原文文档的介绍,地址https://www.npmjs.com/package/copy-webpack-plugin,英文文档里面说的很清楚

    写到这儿我突然觉得说的有些繁琐了,还是直接对要运行的命令和webpack.config.js文件进行具体分析就可以了,安装好插件运行命令然后webpack.config.js配置好就只要注意接口的暴露和引入就可以了

    命令分析:

    cnpm install -g webpack 全局安装

    cnpm install --save-dev webpack本地目录安装

    cnpm install --save-dev copy-webpack-plugin 安装拷贝资源插件

    webpack-dev-server可以实现本地服务的启动(不行的话就webpack-dev-server -g全局实现本地服务的启动)

    webpack-dev-server --inline可以实现本地服务,并且监控文件的修改以及自动刷新的操作(可以通过修改配置文件,增加devServer配置项,将inline设置为true,在cmd里可以直接运行webpack-dev-server即可实现本地服务及自动刷新)

    cnpm install -g json-server 利用json-server进行模拟数据的显示

    再在文件地址栏输入cmd重新打开一个cmd,输入json-server --watch db.json(db.json是自己创建的创建的文件名字随便取)输入完这个命令行会出现一个笑脸开头的一系列英文,然后打开这个json文件就会看到文件里面的数据

    注意json文件的书写格式,里面是数组形式:

     1 {
     2       "skill": [{
     3           "id":1,
     4           "category": "规范--edit",
     5           "name": "HTML4、HTML5、ES5、ES6、CommonJS、CMD、AMD等",
     6           "time": "1年",
     7           "level": "了解"
     8       }],
     9      "work": [{
    10          "id":1,
    11          "category": "私营企业",
    12          "name": "杭州易网灵杰科技有限公司",
    13          "url": "http://www.eoner.com/",
    14          "image": "images/eoner.png",
    15      }], 
    16      "project":[{
    17          "id":1,
    18          "category": "框架",
    19          "name": "Mui、Yo、Ionic等",
    20         "time": "2年",
    21          "level": "熟悉"
    22      }]
    23  }
    json

    可以直接通过localhost:3000/skill/1来获取是第一个数组里面的数据,每个数组里面可以有多个信息,通过里面设置的id值来获取,这里只是做了一个简单的示范,每个数组里面只放了一个数据。

    然后引入zepto框架进行数据请求,这里进行数据请求的时候不能用post要用get,$.get('http://localhost:3000/skill'),这里只是测试地址。

    接下来就是css和sass了

    cnpm i css-loader style-loader --save-dec 样式加载器安装 然后添加模块处理  

    {
        test:/.css$/,
        loader:"style-loader!css-loader"
    }

    cnpm i sass-loader node-sass --save-dev sass加载器安装   可以将css  @import 'h1.css'; 进scss里面 注意在index.js中引入require('../styles/index.scss'); 然后添加模块处理

    1 {
    3     test:/.scss$/,
    4     loader:"style!css!sass"
    6 }

    cnpm i babel-loader babel-core babel-preset-es2015 --save-dev      es2015de 支持,也就是支持es6

    cnpm i extract-text-webpack-plugin --save-dev 安装完后要在webpack.config.js里面申明变量引入var ExtractTextPlugin = require('extract-text-webpack-plugin');  然后加入模块处理

    1 {
    2     test: /.scss$/, 
    3     loader: ExtractTextPlugin.extract("style", "css!sass")
    4 }

    粗略的步骤:

    1.先进行了webpack的安装,包括全局安装和本地安装
    cnpm install -g webpack
    cnpm install --save-dev webpack
    2.创建了
        src/scripts/index.js
        src/scripts/common/utils/dateUtil.js
    3.修改了webpack.config.js,并且加入了entry(入口文件)和output(出口文件)
    4.运行命令webpack,可以生成www/js/index.js,代码有60多行
    5.运行命令webpack -p,可以对www/js/index.js进行代码压缩,并成一行
    6.运行命令webpack -w,可以对来源文件进行实时监控,并进行实时的输出
    7.cnpm install --save-dev copy-webpack-plugin
    8.添加插件模块plugins
    9.利用CopyWebpackPlugin(copy-webpack-plugin)实现文件的拷贝复制操作
    10.cnpm install webpack-dev-server -g
    11.利用cmd,运行webpack-dev-server可以实现本地服务的启动,运行webpack-dev-server --inline可以实现本地服务,并且监控文件的修改以及自动刷新的操作
    12.修改配置文件,增加devServer配置项,将inline设置为true,在cmd里可以直接运行webpack-dev-server即可实现本地服务及自动刷新
    13.mock数据的操作,首先需要进行cnpm install -g json-server,利用json-server进行模拟数据的显示,需要给json对象加上id
    14.可以利用zepto进行$.get数据的获取
    15.修改配置文件,在devServer上加上proxy代理操作,就可以直接将http://localhost:3000的地址转向了http://localhost:8080
    16.cnpm i css-loader style-loader --save-dev(样式加载器的安装)
    17.修改配置文件,增加module模块操作,设置loaders
    18.cnpm i sass-loader node-sass --save-dev(sass加载器)
    19.cnpm i babel-loader babel-core babel-preset-es2015 --save-dev(es2015的支持,也就是支持es6)
    20.cnpm i extract-text-webpack-plugin --save-dev
    View Code

    webpack.config.js分析:

     1 var webpack  = require('webpack');
     2 var CopyWebpackPlugin = require('copy-webpack-plugin');//引入插件copy-webpack-plugin
     3 var ExtractTextPlugin = require('extract-text-webpack-plugin');
     4 
     5 
     6 module.exports = {
     7     //入口文件
     8     entry:{
     9         app:__dirname + '/src/scripts/index.js'//__dirname是当前目录的意思
    10     },
    11 
    12     //出口文件(指明发布的地方)
    13     output:{
    14         path:__dirname + '/www',
    15         filename:'js/index.js'
    16     },
    17     //这里说白就是把src目录下的index.js文件copy到www目录下js下的index.js文件中
    18     
    19     // 服务器配置
    20     devServer:{//有了这个就可以不用运行webpack-dev-server --inline命令
    21         inline:true,
    22         //代理服务
    23         //http://localhost:8080 ----> http://localhost:3000意思就是通过localhost:8080也可以访问接送数据了
    24         proxy:{
    25             '/skill/*':{
    26                 target:'http://localhost:3000',
    27                 secure:false
    28             },'/work/*':{
    29                 target:'http://localhost:3000',
    30                 secure:false
    31             },'/project/*':{
    32                 target:'http://localhost:3000',
    33                 secure:false
    34             },
    35         }
    36     },
    37 
    38     //模块处理
    39     module:{
    40         loaders:[
    41             {
    42                 test:/.js$/,
    43                 loader:'babel'
    44             },
    45             /*
    46             有了下面的模块 这两个就可以不用了
    47             {//处理css
    48                 test://css$/,
    49                 loader:"style-loader!css-loader"
    50             },{//处理scss
    51                 test:/.scss$/,
    52                 loader:"style!css!sass"
    53             }*/
    54             {
    55                 test:/.scss$/,
    56                 loader:ExtractTextPlugin.extract("style","css!sass")
    57             }
    58         ]
    59     },
    60 
    61     //插件模块
    62     plugins:[
    63         new CopyWebpackPlugin([
    64             {from:'./src.index.html',to:'./'},//把src下的index.html文件copy到www下
    65             {form:'./src/images',to:'./images',ignore:['*.gif']},//把src下的图片文件copy到www中images目录下,并且ignore(忽略)jif图片
    66             
    67             /*{form:'./src/xml/**',to:'./data'},//把src下的xml文件copy到www中data文件下
    68             {form:'./src/json/**',to:'./data'}//把src下的json文件copy到www中data文件下
    69             需要copy什么文件就这样类推就可以了
    70             */
    71         ]),
    72         new ExtractTextPlugin('./index.css'),
    73         new webpack.optimize.UglifyJsPlugin({//压缩丑化
    74             compress:{
    75                 warnings:false//取消警告信息
    76             }
    77         })
    78     ]    
    79 }
    View Code
  • 相关阅读:
    Dynamics 365 多租户?多实例?
    接口接收gzip压缩数据并解压
    系统检测到在一个调用中尝试使用指针参数时的无效指针地址 问题
    PBI DAX 中GroupBy
    将sql 查询结果导出到excel
    自动生成数据库表分区脚本
    快速生成导入亿级测试数据到sqlserver
    powershell 版本问题
    运行powershell 脚本 在此系统上禁止运行脚本
    python网站收集
  • 原文地址:https://www.cnblogs.com/colaman/p/6234958.html
Copyright © 2011-2022 走看看