想了解更多,欢迎关注我的微信公众号:Renda_Zhang,我来为大家科普一下关于从零开始的一个webpack开发项目?以下内容希望对你有帮助!

从零开始的一个webpack开发项目(前端技术Webpack学习)

从零开始的一个webpack开发项目

学习 Webpack 的原因

目前前端技术发展很快,引入了越来越多的思想、框架和工具

想了解更多,欢迎关注我的Renda_Zhang

现代化前端开发工作,离不开 Webpack 相关技术栈,是提升前端生产力的利器

Webpack 在前端项目中实践模块化思想

做一个优秀的前端开发者


Webpack 和模块化

模块化的演进过程

第一阶段 - 文件划分方式

└─ stage-1 ├── module-a.js ├── module-b.js └── index.html // module-a.js function foo () { console.log('moduleA#foo') } // module-b.js var data = 'something' <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>第一阶段</title> </head> <body> <script src="module-a.js"></script> <script src="module-b.js"></script> <script> foo() // console.log(data) data = 'other' </script> </body> </html>

第二阶段 - 命名空间方式

// module-a.js window.moduleA = { method1: function () { // console.log('moduleA#method1') } } // module-b.js window.moduleB = { data: 'something' method1: function () { // console.log('moduleB#method1') } } <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>第二阶段</title> </head> <body> <script src="module-a.js"></script> <script src="module-b.js"></script> <script> moduleA.method1() moduleB.method1() moduleA.data = 'foo' </script> </body> </html>

第三阶段 - 立即执行函数表达式

// module-a.js ;(function () { var name = 'module-a' function method1 () { console.log(name '#method1') } window.moduleA = { method1: method1 } })() // module-b.js ;(function () { var name = 'module-b' function method1 () { console.log(name '#method1') } window.moduleB = { method1: method1 } })()

第四阶段 - IIFE 依赖参数

// module-a.js ;(function ($) { // 通过参数明显表明这个模块的依赖 var name = 'module-a' function method1 () { console.log(name '#method1') $('body').animate({ margin: '200px' }) } window.moduleA = { method1: method1 } })(jQuery)

模块加载的问题

<!DOCTYPE html> <html> <head> <title>模块化的演进过程</title> </head> <body> <script src="https://unpkg.com/jquery"></script> <script src="module-a.js"></script> <script src="module-b.js"></script> <script> moduleA.method1() moduleB.method1() </script> </body> </html>

模块化规范的出现

模块化的标准规范

ES Modules 特性

ES Modules 的学习

模块打包工具的出现

随着模块化思想的引入,我们的前端应用又会产生了一些新的问题,比如:

为了解决上面提出的 3 个问题,需要引入模块打包工具:

针对上面的三个设想:


使用 Webpack

Webpack 作为模块化打包工具

Webpack 快速上手

案例

└─ 02-configuation ├── src │ ├── heading.js │ └── index.js └── index.html // ./src/heading.js export default () => { const element = document.createElement('h2') element.textContent = 'Hello webpack' element.addEventListener('click', () => alert('Hello webpack')) return element } // ./src/index.js import createHeading from './heading.js' const heading = createHeading() document.body.append(heading) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Webpack - 快速上手</title> </head> <body> <!- type="module" 表示是一个模块 -> <script type="module" src="src/index.js"></script> </body> </html>

引入 Webpack 去处理上述案例中的 JS 模块打包。

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Webpack - 快速上手</title> </head> <body> <script src="dist/main.js"></script> </body> </html>

{ "name": "01-getting-started", "version": "0.1.0", "main": "n/a", "author": "zce <w@zce.me> (https://zce.me)", "license": "MIT", "scripts": { "build": "webpack" }, "devDependencies": { "webpack": "^4.42.1", "webpack-cli": "^3.3.11" } }

Webpack 最基本的使用的总结

配置 Webpack 的打包过程

基本配置介绍

└─ 02-configuation ├── src │ ├── heading.js │ └── main.js ├── index.html ├── package.json └── webpack.config.js ···················· Webpack 配置文件

// ./webpack.config.js module.exports = { entry: './src/main.js' }

// ./webpack.config.js const path = require('path') module.exports = { entry: './src/main.js', output: { filename: 'bundle.js', path: path.join(__dirname, 'output') } }

让配置文件支持智能提示

// ./webpack.config.js import { Configuration } from 'webpack' /** * @type {Configuration} */ const config = { entry: './src/index.js', output: { filename: 'bundle.js' } } module.exports = config

// ./webpack.config.js // 一定记得运行 Webpack 前先注释掉这里。 // import { Configuration } from 'webpack' /** * @type {Configuration} */ const config = { entry: './src/index.js', output: { filename: 'bundle.js' } } module.exports = config

Webpack 工作模式

打包结果运行原理

想了解更多,欢迎关注我的Renda_Zhang

,