Code前端首页关于Code前端联系我们

一、Vue2 创建项目前,得先准备好什么环境?

terry 18小时前 阅读数 14 #Vue
文章标签 Vue2;环境准备

现在不少想入门前端开发的同学,都会从 Vue2 开始学起,毕竟 Vue2 生态成熟、资料多,企业里也还有大量存量项目在用,但“怎么创建 Vue2 项目”这个问题,新手往往一头雾水——不同场景(做 Demo、正式项目、团队协作)适合的创建方式不一样,环境准备、工具选择里也藏着不少细节,这篇文章用问答形式,把 Vue2 创建项目从前期准备到后期拓展的关键问题讲透,帮你少踩坑。

想顺利创建 Vue2 项目,得先把“基础环境”搭好,核心是 Node.js 和包管理器:

  1. 安装 Node.js
    Vue2 项目常用的工具(vue-cli 脚手架)都依赖 Node.js 环境,建议选 v10+ 版本(版本太旧容易和新依赖打架),去 Node.js 官网下载对应系统的安装包,一路点“下一步”装完后,打开命令行(Windows 用 cmd/PowerShell,Mac/Linux 用终端),输入 node -vnpm -v,能看到版本号就说明装成功了。

  2. 选装 yarn(可选但推荐)
    npm 是 Node 自带的包管理器,但有时候下载慢、版本兼容容易出问题,yarn 是更高效的替代方案,装完 Node 后,用 npm install -g yarn 装 yarn,再输入 yarn -v 验证,之后装项目依赖时,用 yarn 往往更顺畅。

  3. 清理旧版 Vue CLI(如果之前装过)
    要是之前装过老版本的 vue-cli(2.x 版本),得先卸载干净:执行 npm uninstall -g vue-cli,再装新版(Vue2 用 vue-cli 3+ 也能创建项目,后面详细讲)。

Vue2 创建项目有哪几种常用方式?各自适合啥场景?

不同开发场景下,选对创建方式能省超多事儿,常见有三种思路:

  1. vue-cli 脚手架(新手优先选)
    官方出的脚手架工具,能一键生成项目结构,还帮你配好 webpack、Babel 这些复杂工具,适合做中大型项目(需要路由、状态管理、代码规范的那种),尤其是团队协作场景——不用每个人手动配环境,拉取代码后装依赖就能跑。

  2. webpack 手动搭建(想练工程化能力选)
    完全自己配置 webpack、babel、vue-loader 这些工具,能彻底搞懂“项目咋跑起来的”,但步骤多、门槛高,适合想深入理解前端工程化的同学,或者需要高度自定义配置的项目(比如公司内部有特殊打包规则)。

  3. CDN 引入(快速写 Demo 选)
    不用在本地装任何工具,直接在 HTML 里通过 CDN 链接引入 Vue2 库,写点简单交互,优点是“秒级启动”,缺点是搞不了复杂工程化(比如组件拆分、路由管理),适合新手快速验证想法(比如试试插值、指令语法)。

用 vue-cli 快速创建 Vue2 项目,步骤是啥?

vue-cli 是最省心的方式,跟着步骤走就行:

  1. 装 Vue CLI 工具
    打开命令行,执行 npm install -g @vue/cli(全局安装 Vue CLI),装完后输入 vue --version,能看到版本号(5.x 版本也能创建 Vue2 项目)就说明成了。

  2. 创建项目
    在想放项目的文件夹里,执行 vue create 项目名vue create my-vue2-app),这时会进入“选择模板”界面:

    • Manually select features(手动选特性),因为要确保用 Vue2;
    • 然后勾选需要的功能(Babel、Router、Vuex、CSS 预处理器),按空格选中,回车确认;
    • 接下来选 Vue 版本,一定要选 x(毕竟咱要创建 Vue2 项目);
    • 后面的配置(Babel 配置放哪、路由是否用 history 模式),新手选默认选项就行,一路回车。
  3. 启动项目
    创建完后,进入项目文件夹 cd my-vue2-app,然后执行 npm run serve(或 yarn serve),等命令行显示 Compiled successfully,打开浏览器访问 http://localhost:8080,就能看到 Vue2 的默认页面啦~

不用脚手架,手动用 webpack 搭 Vue2 项目要咋做?

想搞懂“项目为啥能跑”,手动搭 webpack 是个好方法,核心步骤如下:

  1. 初始化项目目录
    新建空文件夹(my-vue2-webpack),进去后执行 npm init -y,生成 package.json(项目依赖的配置文件)。

  2. 装核心依赖
    得装这些包(版本对应 Vue2 更稳):

  • vue@2:Vue2 核心库;
  • webpack@4webpack-cli:打包工具(Vue2 项目常用 webpack 4,新版本容易有兼容问题);
  • vue-loader@15vue-template-compiler:处理 .vue 文件的 loader;
  • babel-loader@babel/core@babel/preset-env:把 ES6+ 语法转成 ES5;
  • html-webpack-plugin:生成 HTML 并自动引入打包后的 JS。

执行命令:
npm install vue@2 webpack@4 webpack-cli vue-loader@15 vue-template-compiler babel-loader @babel/core @babel/preset-env html-webpack-plugin --save-dev

  1. 配 webpack(新建 webpack.config.js
    核心配置示例(跟着抄就行,理解后再改):
    const path = require('path');
    const VueLoaderPlugin = require('vue-loader/lib/plugin');
    const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = { entry: './src/main.js', // 项目入口文件 output: { path: path.resolve(__dirname, 'dist'), // 打包后文件输出到 dist 文件夹 filename: 'bundle.js' // 打包后的 JS 文件名 }, module: { rules: [ { test: /.vue$/, // 处理 .vue 文件 loader: 'vue-loader' }, { test: /.js$/, // 处理 JS 文件,转码 ES6+ exclude: /node_modules/, loader: 'babel-loader', options: { presets: ['@babel/preset-env'] } } ] }, plugins: [ new VueLoaderPlugin(), // vue-loader 必须的插件 new HtmlWebpackPlugin({ template: './public/index.html', // 模板 HTML 文件 title: 'Vue2 Webpack Demo' // 页面标题 }) ], resolve: { alias: { 'vue$': 'vue/dist/vue.esm.js' // 让 webpack 识别“完整版 Vue”(支持模板编译) } } };


4. **搭项目结构**  
新建这些文件夹和文件(按规范放代码):  
- <code>src/</code>:放项目源码  
  - <code>main.js</code>:入口文件,创建 Vue 实例;  
  - <code>App.vue</code>:根组件;  
- <code>public/</code>:放静态资源(比如图片、favicon.ico)  
  - <code>index.html</code>:HTML 模板。  
举个栗子:  
<code>main.js</code> 内容:  
```js
import Vue from 'vue';
import App from './App.vue';
new Vue({
  el: '#app',
  render: h => h(App)
});

App.vue 内容:

<template>
  <div id="app">
    <h1>手动搭建的 Vue2 项目</h1>
  </div>
</template>
<script>
export default {
  name: 'App'
};
</script>
<style>
/* 这里写样式 */
</style>

public/index.html 内容:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8"><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
  <div id="app"></div>
</body>
</html>
  1. 运行项目
    package.json 里加脚本:
    "scripts": {
    "dev": "webpack --mode development",
    "build": "webpack --mode production"
    }

    执行 npm run dev,打包后打开 dist/index.html 就能看到页面,要是想实时热更新,还能装 webpack-dev-server 配开发服务器(这里先讲基础流程,后续自己拓展~)。

只想快速写 Demo,用 CDN 引入 Vue2 咋操作?

这种方式不用装任何工具,适合“10 分钟验证想法”:

  1. 选 CDN 链接
    Vue2 的 CDN 可以用 unpkg 或 jsDelivr,

    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>

    (如果是生产环境,用压缩版 vue.min.jshttps://cdn.jsdelivr.net/npm/vue@2/dist/vue.min.js

  2. 写 HTML 文件
    新建 index.html,复制下面内容:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">Vue2 CDN Demo</title>
    </head>
    <body>
    <div id="app">
     {{ message }}
     <button @click="changeMsg">点我改文字</button>
    </div>
```
  1. 直接打开看效果
    双击 index.html 用浏览器打开,就能看到:页面初始显示 “Hello Vue2!”,点按钮文字会变,这种方式适合快速写小 Demo、验证 Vue 基础语法(比如插值、指令、事件绑定)。

Vue2 项目创建后,目录结构里的文件都是干啥的?

以 vue-cli 创建的项目为例,核心文件/文件夹的作用得搞清楚,不然代码都不知道往哪写:

  • node_modules/:放所有依赖包(vue、vue-router、webpack),不用手动改;
  • public/:放静态资源(比如图片、favicon.ico),打包时会原封不动复制到 dist 里;
  • src/:项目源码的核心目录
    • main.js:入口文件,负责创建 Vue 实例、挂载根组件(App.vue),还能配置全局插件(比如路由、Vuex);
    • App.vue:根组件,所有页面的“容器”,可以在这写全局布局;
    • components/:放通用组件(比如按钮、弹窗),复用性高的 UI 都放这;
    • router/(如果选了路由):放路由配置文件(index.js),定义页面跳转规则;
    • store/(如果选了 Vuex):放状态管理文件,管理全局数据;
  • babel.config.js:Babel 的配置文件,决定 ES6+ 语法怎么转成 ES5;
  • package.json:项目依赖和脚本配置(npm run serve 对应的命令在这定义);
  • vue.config.js(可选):Vue CLI 的自定义配置文件,比如改端口、配代理、改 webpack 配置。

理解这些后,新手就明白“代码该往哪塞”——组件放 components,页面路由在 router 里配,全局逻辑在 main.js 里搞。

项目运行时报错,常见原因有哪些?咋排查?

跑项目时遇到报错别慌,先看报错信息,再对应排查:

  1. “端口 8080 被占用”
    命令行提示 Error: listen EADDRINUSE: address already in use :::8080,解决方法:
  • 换端口:在 vue.config.js 里加 devServer: { port: 8081 }(换成其他端口);
  • 关占用程序:Windows 用 netstat -ano | findstr 8080 找进程 ID,任务管理器结束;Mac/Linux 用 lsof -i :8080 找进程,再 kill 掉。
  1. “依赖版本冲突”
    比如装了 Vue3 的包,写 Vue2 代码时,控制台报“export default 找不到”,解决:
  • 检查 package.json 里的 vue 版本是不是 ^2.x,其他依赖(vue-router、vuex)也要对应 Vue2 版本(vue-router@3.x,vuex@3.x);
  • 删光 node_modulespackage-lock.json(或 yarn.lock),重新 npm installyarn 装依赖。
  1. “Vue 模板解析错误”
    比如在 .vue 文件里写了模板,浏览器报“template or render function not defined”,原因:
  • webpack 里没配好 vue-loadervue-template-compiler,检查依赖版本和配置;
  • 如果是 CDN 引入,确保用的是 vue.js(完整版,能解析模板),不是 vue.runtime.js(运行时版,解析不了模板)。
  1. “this 指向不对”
    在方法里用 this 取不到 Vue 实例(比如回调函数里 this 变成 undefined),解决:
  • 把函数写成箭头函数,或者在 methods 里用 bind(this)
  • 新手尽量用 Vue2 经典的“选项式 API”,别和 Vue3 的“组合式 API”混着用,容易搞混。

Vue2 项目创建后,咋加路由和状态管理?

很多项目需要多页面跳转(路由)和全局数据管理(Vuex),这里讲基础配置:

(1)添加 vue-router(Vue2 版本)

  1. 装依赖:执行 npm install vue-router@3(Vue2 对应 vue-router 3.x)。
  2. 配路由:在 src/ 下新建 router/index.js,写路由规则:
    import Vue from 'vue';
    import VueRouter from 'vue-router';
    import Home from '../views/Home.vue'; // 假设新建了 Home.vue 组件

Vue.use(VueRouter); // 全局注册路由插件

const routes = [ { path: '/', name: 'Home', component: Home }, { path: '/about', name: 'About', component: () => import('../views/About.vue') // 懒加载组件 } ];

const router = new VueRouter({ mode: 'history', // 去掉 URL 里的 # routes });

export default router;


3. **注入路由**:在 <code>main.js</code> 里引入并使用路由:  
```js
import Vue from 'vue';
import App from './App.vue';
import router from './router'; // 引入路由配置
new Vue({
  router, // 把路由注入 Vue 实例
  render: h =>

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门