webpack--摸鱼学习

对webpack的理解一直都是知其然却不知其所以然的状态,所以这次就以初学者角度去看webpack,
把自己碎片一样的前端知识系统化串联起来。

学习点:初始化项目,模块化语法在浏览器运行,打包压缩

初始化项目发现问题,模块化语法无法直接在浏览器环境上运行

首先建个空文件夹,在命令行初始化一个项目
npm init

这个操作会生成一个package.json,可以把它当成包装说明书。
输入项目名,作者等信息,项目就初始化好了,可以执行其他操作了。

然后写a.js,b.js,各自抛出,引入到main.js执行。

//a.js
export const a='123';
export const Add=function(a,b){
    return a+b;
}
//b.js 注意这里用的node模块化抛出语法,对应的引入语法是 require
exports.b='bbb';

//main.js 
import {a,Add} from './a';
var b=require('./b')

console.log(a);
console.log(b);
Add(1,101);


a.js用es6模块化语法抛出
b.js用node模块化方案抛出

(Es6的常规语法(解构赋值,…语法等)可以在 命令行 node 指令运行,但模块化语法不行 )

但是这些js代码引入到html后,却无法在浏览器上运行。

报错:require is not defined(应该是浏览器不直接解析node语法)

换成es6的export试试
报错:Cannot use import statement outside a module(浏览器也不支持es6模块语法)


那我想运行在浏览器运行es6模块化语法怎么办?

简单,webpack搞起来

什么是webpack?

Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。

可以将多种静态资源 js、css、less 转换成一个静态文件,减少了页面的请求。

之前已经全局安装过webpack了,项目中可装可不装

  全局安装是为了让你自己能在命令行使用webpack,项目内安装是为了让你的项目发布后,
  其他人可以在直接使用你的npm命令时使用与你相同版本的webpack。这2者其实是没有相关性的,
  本来就是为了2个不同目的进行的安装。

全局 npm install -g webpack web pack-cli
本地 npm install webpack webpack-cli —save—dev

本地安装后,项目文件夹会多一个node_module文件夹用来存放依赖,
package.json中可以看到安装的依赖,

//package.json
{
  "name": "webpack-study",
  "version": "1.0.0",
  //脚本,里面是你运行项目需要的指令:
  //build:webpack 代表运行build指令,执行webpack操作,把项目打包 
  //运行指令  npm run build 。
  "scripts": {
    "build": "webpack",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  //开发依赖
  "devDependencies": {
    "webpack": "^5.64.4"
  },
  //生产依赖
  "description": "",
  "dependencies": {}
}

  • –save 是装在dependencies中的,是属于生产环境的依赖
  • dependencies依赖的包不仅开发环境能使用,生产环境也能使用
  • -D,–save—dev是装在devDependencies中的,开发环境依赖,比如打包,vue-cli,sass编译等依赖啥啥的,实际运行用不到那种。

webpack.config.js

打包需要我们新建一个webpack.config.js,这里面是webpack的额外配置项,比如打包好的文件放哪,打包成啥名字等;
简单写一下

const path = require("path"); //Node.js内置模块
module.exports = {
    entry: './src/main.js', //配置入口文件
    output: {
    path: path.resolve(__dirname, './dist'), //输出路径,__dirname:当前文件所在路径
        filename: 'bundle.js' //输出文件
    
}

项目目录
在这里插入图片描述

dist  //打包后的文件夹
src //项目主体文件
Package.json //项目依赖说明,脚本指令说明
Package-lock.json //记录项目内的依赖版本号,别人运行时下载依赖用,防止版本号冲突
webpack.config.js // webpack的配置项

我运行npm run build打包过后,dist文件夹会生成一个bundle.js,里面是打包压缩编译过的代码,把这个js文件引入html,就可以在浏览器运行了。

试了试,不管是es6模块语法,还是node exports代码在浏览器都可以打包运行;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值