当前位置:  首页>> 技术小册>> Webpack实战:入门、进阶与调优(下)

11.2.1 手动搭建Vue项目

在前端开发领域,Vue.js 凭借其简洁的 API、灵活的组件系统以及高效的响应式数据绑定机制,赢得了广泛的关注与应用。本章节将详细指导你如何从头开始,手动搭建一个基础的 Vue.js 项目,不涉及任何脚手架工具(如 Vue CLI),以便深入理解 Vue 项目的构成与工作流程。通过这个过程,你将学会如何配置项目结构、安装依赖、设置Webpack以及编写基础Vue组件。

11.2.1.1 初始化项目结构

首先,你需要创建一个新的文件夹作为项目的根目录,并在其中创建基本的项目结构。一个典型的 Vue 项目可能包含以下文件和文件夹:

  1. my-vue-project/
  2. ├── /dist # 打包后的文件存放目录
  3. ├── /src # 源代码目录
  4. ├── /assets # 静态资源目录,如图片、字体等
  5. ├── /components # Vue组件目录
  6. ├── App.vue # 根组件
  7. └── main.js # 入口文件
  8. ├── index.html # 单页应用入口HTML文件
  9. ├── webpack.config.js # Webpack配置文件
  10. ├── package.json # 项目依赖文件
  11. └── .gitignore # Git忽略文件

11.2.1.2 创建基础文件

index.html

在项目的根目录下创建 index.html 文件,作为单页应用的入口HTML文件。这个文件将包含基本的HTML结构,并引入打包后的JS文件。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>My Vue Project</title>
  7. </head>
  8. <body>
  9. <div id="app"></div>
  10. <!-- 引入打包后的JS文件 -->
  11. <script src="./dist/bundle.js"></script>
  12. </body>
  13. </html>
main.js

src 目录下创建 main.js 文件,这是Vue应用的入口文件。这里我们将创建Vue实例并挂载到#app元素上。

  1. import Vue from 'vue';
  2. import App from './App.vue';
  3. new Vue({
  4. el: '#app',
  5. render: h => h(App)
  6. });
App.vue

同样在 src 目录下,创建 App.vue 文件,这是Vue项目的根组件。

  1. <template>
  2. <div>
  3. <h1>{{ message }}</h1>
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. data() {
  9. return {
  10. message: 'Hello Vue!'
  11. }
  12. }
  13. }
  14. </script>
  15. <style>
  16. /* 样式内容 */
  17. </style>

11.2.1.3 安装Vue及Webpack相关依赖

在项目根目录下打开终端,运行以下命令来初始化npm并安装Vue及Webpack相关依赖。

  1. npm init -y # 快速初始化npm项目
  2. npm install vue --save # 安装Vue
  3. npm install webpack webpack-cli webpack-dev-server html-webpack-plugin vue-loader vue-template-compiler css-loader vue-style-loader babel-loader @babel/core @babel/preset-env --save-dev # 安装Webpack及其相关依赖和Vue加载器

这里安装的依赖包括:

  • vue:Vue.js核心库。
  • webpack & webpack-cli:Webpack及其命令行工具。
  • webpack-dev-server:一个用于开发环境的Web服务器,提供热重载功能。
  • html-webpack-plugin:简化HTML文件的创建,以便为你的服务自动注入webpack包。
  • vue-loader & vue-template-compiler:用于处理.vue文件的Webpack加载器。
  • css-loader & vue-style-loader:处理Vue组件中的CSS样式。
  • babel-loader & @babel/core & @babel/preset-env:将ES6+代码转换为向后兼容的JavaScript版本。

11.2.1.4 配置Webpack

在项目根目录下创建 webpack.config.js 文件,配置Webpack以支持Vue项目的构建。

  1. const VueLoaderPlugin = require('vue-loader/lib/plugin');
  2. const HtmlWebpackPlugin = require('html-webpack-plugin');
  3. module.exports = {
  4. mode: 'development',
  5. entry: './src/main.js',
  6. output: {
  7. path: __dirname + '/dist',
  8. filename: 'bundle.js'
  9. },
  10. module: {
  11. rules: [
  12. {
  13. test: /\.vue$/,
  14. loader: 'vue-loader'
  15. },
  16. {
  17. test: /\.js$/,
  18. exclude: /node_modules/,
  19. use: {
  20. loader: 'babel-loader',
  21. options: {
  22. presets: ['@babel/preset-env']
  23. }
  24. }
  25. },
  26. {
  27. test: /\.css$/,
  28. use: ['vue-style-loader', 'css-loader']
  29. }
  30. ]
  31. },
  32. plugins: [
  33. new VueLoaderPlugin(),
  34. new HtmlWebpackPlugin({
  35. template: './index.html'
  36. })
  37. ],
  38. devServer: {
  39. contentBase: './dist',
  40. hot: true
  41. }
  42. };

11.2.1.5 运行和构建项目

package.json 文件中添加脚本以支持Webpack的启动和构建。

  1. "scripts": {
  2. "start": "webpack serve --open",
  3. "build": "webpack --mode production"
  4. },
  • npm start:启动开发服务器,并自动打开浏览器预览页面。
  • npm run build:构建生产环境的代码到dist目录。

现在,你可以通过运行 npm start 来启动你的Vue项目了。Webpack将监听文件变化,并自动重新编译和刷新浏览器,以显示最新的更改。

11.2.1.6 扩展与优化

随着项目的发展,你可能需要添加更多的Webpack插件和loader来支持更复杂的构建需求,如代码分割、图片优化、环境变量注入等。此外,使用Vue Router和Vuex来管理路由和状态也是构建大型Vue应用时的常见选择。

通过手动搭建Vue项目,你不仅加深了对Vue和Webpack的理解,也为未来的项目构建和优化打下了坚实的基础。这个过程虽然相对繁琐,但每一步都是对前端工程化的一次深刻实践。


该分类下的相关小册推荐: