Vue之使用Vue-cli创建Webpack工程化项目

文章目录

什么是Webpack

  1. 核心包传统开发模式:基于 html / css / js 文件,直接引入核心包,开发 Vue。
  2. 工程化开发模式:基于构建工具(例如:webpack ) 的环境中开发 Vue。

比如我们的代码有ES6高级语法,TS语法,Less语法,Sass语法。这些直接在浏览器中跑,浏览器不认识。我们的以前的解决办法就是通过插件(Less)或者包(TS)把这些语法转为JS语法解决浏览器不认识这些语法的问题。

比如:我们的使用TS,Less一起开发开发,Less通过Easy Less插件生成对应css样式,Ts通过安装ts-node包执行tsc --init 指令会生成对应js语法,然后我们需要把生成的js文件和css文件整和到html中进行使用。这太麻烦有没有一种方式我们只需要下载对应的包,然后直接帮我们生成html+Css+JS的工具呢。答案当然是有的:Webpack。

什么是Vue-cli脚手架

我们上述说过Webpack只要下载对应的包就能帮我们自动打包生成浏览器认识的H5+JS语法,而Vue-cli脚手架的作用通俗来说就是:通过给我们选项帮我们安装相关的包,而且还会给我们创建相关的打包工具。

专业的表述是:Vue CLI 是 Vue 官方提供的一个全局命令工具。

可以帮助我们快速创建一个开发 Vue 项目的标准化基础架子。【集成了 webpack 配置】

注意不同版本的Vue-cli脚手架创建的项目文件目录不同,如果创建的项目目录和我的不一样不要着急,问问ai这些都是干什么用的就好

好处:

  1. 开箱即用,零配置
  2. 内置 babel 等工具
  3. 标准化

使用Vue-cli 创建Webpack开发工具

使用步骤:

  1. 全局安装 (一次) :yarn global add @vue/cli 或 npm i @vue/cli -g
  2. 查看 Vue-cli 版本:vue --version
  3. 创建项目架子:vue create project-name(项目名-不能用中文)
  4. 启动项目: yarn serve 或 npm run serve(找package.json)

第一、二步

bash 复制代码
// 随便打开一个cmd 输入一个命令 因为他是全局的
PS D:\Node_Nvm> npm install -g @vue/cli

// 查看版本
PS D:\Node_Nvm> vue -V
@vue/cli 5.0.8

第三步

基于 vue-cli 快速生成工程化的 Vue 项目:vue create 项目的名称

第一步,打开你要创建的目录,比如打开day3_code文件夹

第二步,在文件上方搜索栏输入cmd 回车

第三步 选择要安装哪些东西。

bash 复制代码
vue create demo-first
// 使用上下箭头改变下面三个选项 
Vue CLI v5.0.8
? Please pick a preset: (Use arrow keys)
> Default ([Vue 3] babel, eslint)  //这个是安装Vue 3
  Default ([Vue 2] babel, eslint)  //这个是安装Vue 2
  Manually select features         //这个是手动选择你要安装那个功能,一般选这个

Vue CLI v5.0.8
? Please pick a preset: Manually select features
? Check the features needed for your project: (Press <space> to select, <a> to toggle all, <i> to invert selection, and
<enter> to proceed)
>(*) Babel   //这是解决js兼容性,必须安装                
 ( ) TypeScript
 ( ) Progressive Web App (PWA) Support  // 渐进式的web
 ( ) Router
 ( ) Vuex
 ( ) CSS Pre-processors  //CSS预处理器  按下空格键前面小括号有个星号代表选中安装
 (*) Linter / Formatter  // 先不选 这个是约束团队写代码的风格。如果不是规定风格就会报错
 ( ) Unit Testing
 ( ) E2E Testing

// 下面是选择之后的 回车
Vue CLI v5.0.8
? Please pick a preset: Manually select features
? Check the features needed for your project: (Press <space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
 (*) Babel
 ( ) TypeScript
 ( ) Progressive Web App (PWA) Support
 ( ) Router
 ( ) Vuex
 (*) CSS Pre-processors
>( ) Linter / Formatter
 ( ) Unit Testing
 ( ) E2E Testing

Vue CLI v5.0.8
? Please pick a preset: Manually select features
? Check the features needed for your project: Babel, CSS Pre-processors
? Choose a version of Vue.js that you want to start the project with (Use arrow keys)
> 3.x
  2.x // 选择这个回车

  
Vue CLI v5.0.8
? Please pick a preset: Manually select features
? Check the features needed for your project: Babel, CSS Pre-processors
? Choose a version of Vue.js that you want to start the project with 2.x
? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): (Use arrow keys)
> Sass/SCSS (with dart-sass)
  Less   // 这些都是CSS预处理器,选择这个,就这个学过 回车
  Stylus

Vue CLI v5.0.8
? Please pick a preset: Manually select features
? Check the features needed for your project: Babel, CSS Pre-processors
? Choose a version of Vue.js that you want to start the project with 2.x
? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Less
? Where do you prefer placing config for Babel, ESLint, etc.? (Use arrow keys)
// 这句话是说 Babel, ESLint, etc.这些第三方插件的配置文件是放到 独立配置文件,还是放到package.json
> In dedicated config files  //独立配置文件 选择这个 回车
  In package.json  // 

// 这句话是说 是否把上面的选项保存,
Vue CLI v5.0.8
? Please pick a preset: Manually select features
? Check the features needed for your project: Babel, CSS Pre-processors
? Choose a version of Vue.js that you want to start the project with 2.x
? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Less
? Where do you prefer placing config for Babel, ESLint, etc.? In dedicated config files
? Save this as a preset for future projects? (y/N)// 选择y
// 给这个保存起个名字
? Save this as a preset for future projects? (y/N)Yes
? Save preset as: hsh1  // 回车

// 注意在他安装时不触碰,cmd面板,如果动了 会暂停安装,想要继续,点击一下cmd面板,CTRL+C继续安装

93 packages are looking for funding
  run `npm fund` for details

🚀  Invoking generators...
📦  Installing additional dependencies...

added 20 packages from 18 contributors in 4.522s

95 packages are looking for funding
  run `npm fund` for details

⚓  Running completion hooks...

📄  Generating README.md...

🎉  Successfully created project demo-first.
👉  Get started with the following commands: //想要开发执行下面两个命令

 $ cd demo-first  // 
 $ npm run serve  // 第一天我们配置的名字是npm run dev
 
D:\笔记之前端\笔记之Vue\笔记\code\第3章\day3_code>cd demo-first

D:\笔记之前端\笔记之Vue\笔记\code\第3章\day3_code\demo-first>npm run serve


DONE  Compiled successfully in 4833ms                                                                                                      11:49:03


  App running at:
  - Local:   http://localhost:8080/
  - Network: http://10.82.12.105:8080/

  Note that the development build is not optimized.
  To create a production build, run npm run build.
// 这个会打开一个我们的项目,如果把这个cmd关掉在去访问http://localhost:8080/会失败,我们只需要在vscode打开项目,打开终端输入 npm run serve

// vscode终端
PS D:\笔记之前端\笔记之Vue\笔记\code\第3章\day3_code\demo-first> npm run serve  
// 两次CTRL + C结束vscode终端

第四步:使用VSCode或者Trae CN打开项目。不同版本Vue-Cli创建的目录可能不同但是大概都是一样的。

运行流程

运行流程讲解

在工程化的项目中,vue 要做的事情很单纯:通过 main.js 把 App.vue结构 渲染到 index.html 的指定区域中。其中:

① App.vue 用来编写待渲染的模板结构

② index.html 中需要预留一个 el 区域

③ main.js 把 App.vue 渲染到了 index.html 所预留的区域中

下面是src->main.js的注释,解释说明

js 复制代码
// 导入 vue 这个包,得到 Vue 构造函数 new Vue({  })
import Vue from 'vue'
// 导入 App.vue 根组件,将来要把 App.vue 中的模板结构,渲染到 HTML 页面中
// import App from './App.vue'
import App from './App.vue'

Vue.config.productionTip = false

// 创建 Vue 的实例对象
new Vue({
  // 把 render 函数指定的组件,渲染到 HTML 页面中
  render: h => h(App),
}).$mount('#app')
// Vue 实例的 $mount() 方法,作用和 el 属性完全一样!

之所以我们打开index.html 没有看见导入main.js 是因为: 用户提供的 HTML 文件是 Vue CLI 工程的标准化模板,通过 Webpack 构建工具链实现了资源引用的自动化。​​不需要手动添加对 main.js 的引用​​,因为入口文件的打包产物会被 HtmlWebpackPlugin 动态注入到 HTML 中。

案例

创建Test组件进行开发。

下面是一个例子,能更好理解运行流程

先在componts文件中创建Test.vue文件。

html 复制代码
<template>
  <div>
    <h1>这是用户自定义的Test.vue</h1>
  </div>
</template>

修改src->main.js中的代码

js 复制代码
import Vue from 'vue'
import App from './App.vue'

import Test from './components/Test.vue'


Vue.config.productionTip = false

new Vue({
  // 使用Test组件。
  render: h => h(Test)
}).$mount('#app')
// 结果为:这是用户自定义的Test.vue

public->index.html 中内容不变

这上面代码可以理解为,Test.vue的代码将public->index.html中的<div id='app'>给替换了

.$mount('#app')和el: '#app' 的区别

本质是一样的。

html 复制代码
<head>
  <title>Document</title>
  	<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script>
</head>

<body>
  <div id="app">{{username}}</div>

<script>
    // 先创建对象在指定作用范围
    const vm = new Vue({
      data: {
        username: 'admin'
      }
    })
    vm.$mount('#app')
    
    // 下面是在创建对象的时候指定作用范围
    // new Vue({
    //   el: '#app',
    //   data: {username: 'admin' },
    // });
  </script>
</body>

</html>

使用Webpack和使用核心库开发的语法区别。

最大的区别是js中数据源,方法,计算属性这些东西。

js 复制代码
// 核心库开发
new Vue({
      el: '#app',
      // 这里是对象的形式。
      data: {
      	username: 'admin'
      },
    });
js 复制代码
// webpack开发。
<script>
	// 默认导出。这是固定写法!
	export default {
	  // data 数据源
	  // 注意:.vue 组件中的 data 不能像之前一样,不能指向对象。
	  // 注意:组件中的 data 必须是一个函数
	  data() {
	    // 这个 return 出去的 { } 中,可以定义数据
	    return {
	      username: 'admin'
	    }
	  }
	}
</script>
相关推荐
橙色小博2 分钟前
Python中openpyxl库的基础解析与代码实例
前端·python·excel·openpyxl
xcLeigh22 分钟前
HTML5实现简洁的端午节节日网站源码
前端·html5·节日·端午节
大数据魔法师2 小时前
Bootstrap项目 - 个人作品与成就展示网站
前端·bootstrap·html
LaughingZhu5 小时前
PH热榜 | 2025-05-29
前端·人工智能·经验分享·搜索引擎·产品运营
汪子熙8 小时前
Angular i18n 资源加载利器解析: i18n-http-backend
前端·javascript·面试
天天扭码8 小时前
在React项目中实现富文本编辑文章并发布
前端·react.js·github
Yehong8 小时前
nuxt实现50个前端小创意(1)——前端基础学习
前端·vue.js
拉不动的猪8 小时前
回顾vue3组件在运行过程中的编译提升
前端·vue.js·trae
天天扭码8 小时前
前端必备 | 一文掌握React的Token管理
前端·javascript·react.js
烛阴8 小时前
用Joi守住数据防线!Node.js/前端必备校验神器入门与进阶
前端·javascript