当前位置:首页 > 技术 > 正文内容

Vue.js项目初始化与开发环境搭建

访客 技术 2026年6月30日 2

Vue.js项目初始化与开发环境搭建

Vue CLI是专为Vue.js设计的完整开发工具链,它基于Node.js环境运行,该环境采用Google V8引擎,使JavaScript代码能够在操作系统层面执行,突破了传统浏览器环境的限制。

Vue应用的核心架构建立在组件化设计之上,页面各部分被拆分为独立组件,通过组合方式构建完整界面。整个应用采用单页面应用(SPA)架构模式。

开发Vue CLI项目时,从创建到最终部署,必须经过编译过程,将源码转换为纯HTML、JavaScript和CSS文件。

官方文档参考:Vue CLI官方指南

开发环境配置

Node.js与包管理工具安装

  1. 安装Node.js
  • 访问官方网站下载安装包:https://nodejs.org/zh-cn/
  • 执行标准安装流程
  1. 安装cnpm(国内镜像加速)
npm install -g cnpm --registry=https://registry.npm.taobao.org
  1. 安装Vue CLI脚手架
cnpm install -g @vue/cli
  1. 清理npm缓存
npm cache clean --force
  1. 验证安装
vue --version

创建新项目

  1. 命令行方式创建项目
vue create my-project-name
  1. 图形界面方式创建
vue ui

项目创建时的重要配置:

  1. 确保在目标目录下执行创建命令
  2. 选择"Manually select features"自定义配置
  3. 勾选Router和Vuex插件,其他选项根据需求选择

项目目录结构解析

  • node_modules

  • 存放项目依赖的第三方模块

  • 分享项目时应排除此目录

  • 使用cnpm install根据package.json自动安装依赖

  • public

  • favicon.ico:网站标签页图标

  • index.html:单页面应用的HTML模板(不建议修改)

  • src(源代码目录)

  • assets:静态资源文件夹

  • 图片、CSS、JS等文件

  • components:可复用组件

  • 单个Vue组件文件(.vue扩展名)

  • router:路由配置

  • index.js:路由主配置文件

  • store:状态管理

  • index.js:Vuex状态管理配置

  • views:页面级组件

  • 各功能页面组件

  • App.vue:根组件

  • main.js:应用入口文件

  • 配置文件

  • package.json:项目依赖与脚本配置

  • jsconfig.json:JavaScript配置

  • babel.config.js:Babel转译配置

  • vue.config.js:Vue项目特定配置

基础开发实践

ES6模块导入导出

导入整个模块

import ModuleName from './module/path'

导入特定导出内容

// 导出模块
export default { ... }  // 默认导出(仅一次)
export const variable = value  // 命名导出(可多次)

// 导入模块
import ModuleName from './module/path'  // 默认导入
import { variable1, variable2 } from './module/path'  // 命名导入

示例应用:

import MyComponent from "@/components/MyComponent"
// @符号在Vue项目中代表src目录

export default {
  name: 'MyPage',
  components: {
    MyComponent  // 注册组件以便在模板中使用
  }
}

Vue组件文件结构

Vue组件文件由三个主要部分组成:

<template>
  <!-- HTML模板,将被编译为组件的template属性 -->
  <div>组件内容</div>
</template>

<script>
  // JavaScript逻辑,定义组件行为
  export default {
    name: "ComponentName",
    data() {
      return {
        // 组件数据
      }
    }
  }
</script>

<style scoped>
  /* CSS样式,scoped属性确保样式仅限当前组件 */
</style>

注意:添加scoped属性的style标签会限制样式作用域,防止影响子组件

组件渲染流程

main.js(应用入口)

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

Vue.config.productionTip = false

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

App.vue(根组件)

<template>
  <div id="app">
    <nav>
      <router-link to="/">首页</router-link> |
      <router-link to="/about">关于</router-link>
    </nav>
    <router-view/>
  </div>
</template>

页面组件示例

<template>
  <div class="page-container">
    <h1>页面标题</h1>
    <hr>
    <custom-component message="来自页面的数据">
      <h1 slot="header">自定义内容</h1>
    </custom-component>
    <hr>
  </div>
</template>

<script>
import CustomComponent from "@/components/CustomComponent"

export default {
  name: 'PageView',
  components: {
    CustomComponent
  }
}
</script>

子组件示例

<template>
  <div>
    <slot name="header"></slot>
    <div>组件主体内容</div>
    <p>接收到的消息:{{ message }}</p>
  </div>
</template>

<script>
export default {
  name: "CustomComponent",
  data() {
    return {
      componentName: "CustomComponent",
      internalData: "内部数据"
    }
  },
  props: ['message']
}
</script>

HTTP请求处理

使用axios发送网络请求:

  1. 安装axios
npm install axios -S
  1. 在组件中导入并使用
import axios from 'axios'

// 发送POST请求
axios.post("http://api.example.com/login", {
    username: this.username,
    password: this.password
}).then(response => {
    console.log(response)
    
    // 设置认证令牌
    axios.defaults.headers.common['Authorization'] = `Bearer ${response.data.token}`
}).catch(error => {
    console.error("请求失败:", error)
})
  1. 封装axios请求(可选)
// 创建api服务文件
import axios from 'axios'

const apiClient = axios.create({
  baseURL: 'http://api.example.com',
  headers: {
    'Content-Type': 'application/json'
  }
})

export default {
  login(credentials) {
    return apiClient.post('/login', credentials)
  },
  
  getProtectedData() {
    return apiClient.get('/protected-data')
  }
}

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

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