Vue.js实战—使用webpack

本文深入探讨前端工程化概念,重点介绍webpack如何处理模块依赖,实现代码压缩、CSS预处理等功能,适用于单页面富应用的开发场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.1 前端工程化与webpack

通常,前端自动化(半自动化)工程主要解决以下问题:

· JavaScript、CSS代码的合并和压缩。

· CSS预处理:Less、Sass、Stylus的编译。

· 生成雪碧图(CSS Sprite)。

· ES6转ES5.

· 模块化。

前端工程化工具webpack打包后的代码已经不只是你写的代码,其中夹杂了很多webpack自身的模块处理代码。在webpack的世界里,一张图片、一个css甚至一个字体,都成为模块(Module),彼此存在依赖关系,webpack就是来处理模块间的依赖关系的,并把它们进行打包。

举一个简单的例子,平时加载CSS大多通过<link>标签引入CSS文件,而在webpack里,直接在一个.js文件中导入,例如:

import 'src/styles/index.css'

webpack的主要适用场景是单页面富应用(SPA)。SPA通常是由一个html文件和一堆按需加载的js组成,它的html结构可能会非常简单,比如:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta chartset="UTF-8">
    <title>webpack app</title>
    <link rel="stylesheet" href="dist/main.css">
</head>
<body>
    <div id="app"></div>
    <script type="text/javascript" src="dist/main.js"></script>
</body>
</html>

在ES6中有两个语法export和import,是用来导出和导入模块的。一个模块就是一个js文件,它拥有独立的作用域。里面定义的变量外部是无法获取的。比如将一个配置文件作为模块导出:

//config.js
var Config = {
    version: '1.0.0'
};
export {Config};

//config.js
export var Config = {
    version: '1.0.0'
};

其他1类型(比如函数、数组、常量等)也可以导出,例如导出一个函数:

//add.js
export function add(a,b){
    return a + b;
};

模块导出后,在需要使用模块的文件使用import再导入,就可以在这个文件内使用这些模块了。例如:

//main.js
import { config } from './config,js';
import { add } from './add.js';

console.log(Config);  //{ version: '1.0.0' }
console.log(add(1,1));  //2

以上几个示例中,导入的模块名称都是在export的文件中设置的,也就是说用户必须预先知道这个名称叫什么。而有时候,用户不想去了解名称是什么,只是把模块的功能拿来使用,或者想自定义名称,这是使用export default来输出默认的模块。例如:

//config.js
export default {
    version: '1.0.0'
};

//add.js
export default function(a,b) {
    return a + b;
};

//main.js
import conf from './config.js'
import Add from './add.js'

console.log(Config);  //{ version: '1.0.0' }
console.log(add(1,1));  //2

1.2 就是一个js文件而已

归根到底,webpack就是一个.js配置文件。webpack配置中最重要也是必选的两项就是入口(Entry)和出口(Output)。入口的作用是告诉webpack从哪里开始寻找依赖,并且编译,出口则用来配置编译后的文件储存位置和文件名。

var path = require('path');

var config = {
    entry: {
        main: './maim'
    },
    output: {
        path: path.join(_dirname, './dist'),
        publicPath: '/dist/',
        filename: 'main.js'
        }
};

module.exports = config;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值