zoukankan      html  css  js  c++  java
  • 初学webpack

    --这篇学习笔记,是根据简书zhangwang的的文章来进行学习的

    依照惯例,webpack是模块打包工具。我的理解就是wbepack会分析你项目的结构,然后把那些浏览器可能没办法直接运行的(sass、es6(某E))转换成浏览器可以直接运行的格式。

    首先是第一步安装:

    yarn global add webpack//使用yarn来安装
    npm install webpack -g//使用npm来安装

    公司的电脑装webpack的时候,装了全局的webpack但是使用的时候 还是会显示webpack不是内部或外部命令,也不是可运行的程序或批处理文件。

    解决方法是,配置系统变量,手动把webpack的路径放在系统变量path里面就解决了

    (用的是yarn.因为npm安装都是能出一堆的错,换了淘宝源还是没用,果断,先放弃!)C:AppDataLocalYarnconfigglobal ode_modules.bin (路径是这个)

    接着就是开始使用webpack了,在使用之前的准备

    第一步新建一个文件夹,然后在下面的Terminal输入

    yarn init//使用yarn进行初始化
    npm init//使用npm进行初始化

    因为只是学习,所以要输入的东西我都是一路空格下来,这时候在新建好的文件夹下就会出现一个pack.json的文件夹(这个目录是我之前学react的时候建的...请无视这个目录名的意思)

    {
      "name": "react-app",//目录名
      "version": "1.0.0",//版本号
      "main": "index.js",//程序主入口模块的ID,如果别的用户需要你的包,当用户调用的时候,返回的就是这个模块的导出
      "license": "MIT"//MIT许可证
    }

    然后在新建的文件夹里,新建文件,react-app文件夹下的目录结构如下

    然后往我们的项目中加入webpack的依赖包

    yarn add webpack//yarn的方式
    npm install --save-dev webpack//npm的方式

     npm的命令里面--save-dev是在pack.json文件中添加模块和版本号,所以json文件就变成了这样

    {
      "name": "react-app",
      "version": "1.0.0",
      "main": "index.js",
      "license": "MIT",
      "devDependencies": {
        "webpack": "^3.10.0"
      }
    }
    

    devDependencies是当前包所依赖的其他包,这里就是依赖了webpack的3.10.0的版本

    然后在index.html中写下代码:

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <div id='root'></div>
    <script src="bundle.js"></script>
    </body>
    </html>

    bundle.js是一会我们webpack打包后会生成的js文件。为什么会取这个名字捏,这跟后面的配置文件有关系

    接着我们来写test.js和main.js里面的内容

    //test.js
    module.exports = function() { var test = document.createElement('div'); test.textContent = "Hello I am test!"; return test; };
    
    
    //main.js
    const test = require('./test.js'); document.querySelector("#root").appendChild(test());

    接着就要开始打包了

    首先我们先要配置一个webpack的配置文件,取名为webpack.config.js

    module.exports = {
      entry:  __dirname + "/app/main.js",//入口文件
      output: {
        path: __dirname + "/public",//打包后的文件存放的地方
        filename: "bundle.js"//打包后输出文件的文件名
      }
    }

    看到没有!bundle.js就是在这里配置的。

    配置完文件以后,只需要在控制台输入命令 webpack就好了(此处我的webpack安装的是全局的,所以只需要输入webpack),之后就打包成功了。打开你的bundle.js就能看到代码,用浏览器打开你的index.html,就可以看见Hello I am test!了

     除了通过在终端输入webpack打包,还可以通过配置pack.json文件来进行打包

    {
      "name": "react-app",
      "version": "1.0.0",
      "main": "index.js",
      "license": "MIT",
      "dependencies": {
        "webpack": "^3.10.0"
      },
      "scripts":{
        "start":"webpack"
      }
    }  

     这时候我们在控制台输入

    yarn start  

     就会开始进行打包了。

    下一个知识点就是 使用webpack来构建本地服务器(基于node.js)

    这里首先要先安装一个项目依赖webpack-dev-server 

    yarn add webpack-dev-server

     我们可以从pack.json中看到webpack-dev-server的版本号

    "dependencies": {
        "webpack": "^3.10.0",
        "webpack-dev-server": "^2.11.1"
      }
    

    webpack-dev-server的配置也要在webpack.config.js里面进行,

    其中主要的配置选项有

    contentBase:配置要为哪个文件建立本地服务器

    port:配置监听端口,默认为8080

    inline:true(配置当源文件改变的时候,浏览器会自动刷新)

    historyApiFallBack:true(所有跳转指向index.html)这一个配置我还不理解。后面理解了会进行补充

    接着我们就来配置刚刚那个项目的本地服务器

    devServer:{
    contentBase:"./public",
    inline:true,
    historyApiFallback:true,
    port:"3000"
    }

    然后在pack.json中进行配置,用于开启本地服务区

    "scripts": {
        "start": "webpack",
        "server": "webpack-dev-server --open"
      }  

    最后在控制台输入命令

    yarn run server  

    打包编译完成之后,就可以在http://localhost:3000/看到打包好的效果啦,然后去改动js的话,可以看到页面会自动刷新!

    接着就是Loader,我觉得loader就是调用外部方法的时候使用的。他的配置选项有:

    test:所需要处理的文件的拓展名的正则表达式(= =突然发现自己还需要努力的看一看正则!猝)

    loader:loader的名称(比如babel-loader(e6=>es5))

    include:手动添加上必须处理的文件

    exclude:屏蔽不需要处理的文件

    query:为loaders提供额外的设置选项

    模块的配置具体代码如下

    module: {
            rules: [
                {
                    test: /.js$/,
                    use: {
                        loader: "babel-loader",
                        options: {
                            presets: [
                                "env"
                            ]
                        }
                    },
                    exclude: /node_modules/
                }
            ]
        }  
  • 相关阅读:
    关于unity的一个不错的插件平台
    erlang otp中的socket参数设置
    android开发国内镜像
    composer中文镜像
    bootstrap的一些资源
    根据现有表操作基于active record的model
    Erlang Web 监控工具
    erlang程序发布的时候需要注意的地方
    pcl学习笔记(二):点云类型
    c++中inline函数的意义
  • 原文地址:https://www.cnblogs.com/cyx819340507/p/8350409.html
Copyright © 2011-2022 走看看