vue开发项目

2023-11-12

一、环境安装

1、概述

1、若只写个vue的简单demo程序,那么只需在html中引入vue.js即可,没必要安装node、npm、webpack以及Vue-cli

2、如果开发大型项目,就需要vue-cli完成项目目录结构 部署 热加载等功能

3、因为vue-cli和webpack一样也是一个工具,会依赖于webpack生成一套的webpack配置,所以要使用vue-cli之前,本地要有webpack(而webpack安装运行依赖node环境)
4、所以使用脚手架vue-cli创建完成结构的vue项目首先需要安装node以及webpack

2、安装node,以及npm

首先我们上node.js官网(https://nodejs.org/zh-cn/),下载最新的长期版本,直接运行安装完成之后,我们就已经具备了node和npm的环境(安装node同时会安装node)

C:\Users\HXB101>node -v
v12.18.3
C:\Users\HXB101>npm -v
6.14.6

默认npm安装全局模块所在路径以及缓存cache的路径在C:\Users\用户名\AppData\Roaming\npm路径中,如果不想占用c盘空间,可以变更默认路径。设置路径能够把通过npm安装的模块集中在一起,便于管理,这里将模块路径文件和缓存cache文件夹放在了node.js安装路径下,即在D:\nodejs(安装文件夹下)。

在安装文件夹下创建两个子文件夹:node_global和node_cache。

用命令

npm config set prefix "D:\nodejs\node_global"
npm config set cache "D:\nodejs\node_cache"

设置global和cache,设置成功后,后续用命令npm install -g XXX安装的模块就在D:\nodejs\node_global\node_modules里。

设置环境变量

说明:设置环境变量可以使得住任意目录下都可以使用cnpm、vue等命令,而不需要输入全路径。

设置环境变量NODE_PATH:我的电脑-右键-属性-高级系统设置-高级-环境变量,系统变量下新建NODE_PATH,路径设置为:D:\nodejs

设置path:将用户变量中Path下边的npm变量删除;在环境变量下新建两个值如下

测试是否配置成功,在cmd窗口中输入以下指定全局安装express模块

npm install -g express     # -g表示是全局安装

命令执行完后,会在D:\java\nodejs\node_global\node_modules文件夹下产生express文件夹

安装cnpm

说明:由于许多npm包都在国外,用淘宝的镜像服务器,对依赖的module进行安装。

参考网址为:npmmirror 中国镜像站

安装命令为:npm install -g cnpm --registry=https://registry.npm.taobao.org  其他指令中npm使用cnpm替换即可

3、全局安装webpack

npm install webpack -g

4、安装vue-cli

一般直接全局安装,很少使用局部安装脚手架

脚手架2安装方式

npm install vue-cli -g

脚手架3安装方式

cnpm install -g @vue/cli
# OR
yarn global add @vue/cli

安装之后,你就可以在命令行中访问 vue 命令。你可以通过简单运行 vue,看看是否展示出了一份所有可用命令的帮助信息,来验证它是否安装成功。

如何本地有时要用cli 3有时要用cli2?怎么办?Vue CLI 3 和旧版使用了相同的 vue 命令,所以要使用3又要使用2,只需拉取一个2的模板,命令如下

npm install -g @vue/cli-init

这样既可以用3也可以用2创建项目


注:vue-cli3和vue-cli2区别

1、3是基于webpack4打造的,2是基于webpack3打造的

2、3设计原则是0配置,移除了配置文件目录下的build和config

3、3提供了可视化的vue ui命令更加人性化

4、3移除了static文件夹,新增public文件夹 并且index.html移到了public中

二、创建项目

1、使用vue-cli4

vue create hello-world  #创建项目

2、vue-ui创建项目

环境搭建之后,打开cmd输入vue ui就可以看到创建项目的页面

选择要创建的项目位置,创建项目

根据自己需要

使用工具打开项目

这里使用idea打开项目,前提是要idea已经安装了vue.js插件,打开项目,如下解决报红提示

idea打包、启动项目终端使用命令

npm run build
npm run serve

停掉项目:ctrl+c

3、划分项目结构

四、元素初始样式统一

不同浏览器显示一样的显示,这里导入流行的normalize.css到css中

地址GitHub - necolas/normalize.css: A modern alternative to CSS resets

然后自定义一个base.css自己的初始化样式文件,并且在base.css中引入这个normalize.css,在app.vue中引入base.css即可

五、给项目路径文件其别名

给项目下的文件结构起别名,这样方便import,项目下创建一个vue.config.js

module.exports={
    configureWebpack:{
        resolve:{
            alias:{
                'assets': '@/assets',
                'common':'@/common',
                'components':'@/components',
                'network':'@/network',
                'views':'@/views',
            }
        }
    }
}

 注意:router和store没有必要配置,只会在main.js中使用,并且全局可通过this.$router和this.$store获取

/*配置好之后不需要再@import "./assets/css/base.css";直接如下导入*/
@import "assets/css/base.css";
注意:在dom中使用的使用方式:~别名

六、配置项目格式化文件.editorconfig

cli3创建的项目没有.editorconfig这个文件,但是如果是一个新建的项目,可以配置这个文件进行规范整个项目的风格

root = true

[*]

charset = utf-8

indent_style = space

indent_size = 2

end_of_line = lf

insert_final_newline = true

trim_trailing_whitespace = true

七、改变导航栏图标

将favicon.ico图标放入public下即可,会在index.html中引用

<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title><%= htmlWebpackPlugin.options.title %></title>
  </head>
  <body>
    <noscript>
      <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

八、router模块

查看路由模块使用

九、vuex模块

查看vuex使用

十、element-ui组件

移动端常用 UI 组件库

1. Vant Vant 3 - Mobile UI Components built on Vue

2. Cube UI cube-ui Document

3. Mint UI Mint UI

PC 端常用 UI 组件库

1. Element UI Element - The world's most popular Vue UI framework

2. IView UI https://www.iviewui.co

3、Ant Design of Vue

https://antdv.com/docs/vue/introduce-cn/

地址

Element - The world's most popular Vue UI framework

1、安装

npm i element-ui -S

2、使用

2.1、完整使用引入组件以及组件样式

import Element from 'element-ui'
import "element-ui/lib/theme-chalk/index.css"
Vue.use(Element)

在要使用的地方引入对应的组件
<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png">
    <el-row>
      <el-button type="danger">危险按钮</el-button>
      <el-button :plain="true" @click="open">打开消息提示</el-button>
    </el-row>
  </div>
</template>

<script>

export default {
  name: 'App',
  methods:{
    open() {
      this.$message('这是一条消息提示');
    },
  }
}
</script>

2.2、按需引入

查看官网按需引入,上面的引入方式是引入了element所有的样式和组件,我们应该按需引引入

借助 babel-plugin-component(Ant desin团队设计的),我们可以只引入需要的组件,以达到减小项目体积的目的。

6、增加增加loadin效果

封装Axios实现全局的loading自动显示效果(结合Element UI)

十一、qs:查询参数序列化和解析库

将一个普通的object序列化成一个查询字符串,或者反过来将一个查询字符串解析成一个object,帮助我们查询字符串解析和序列化字符串。

安装

cnpm install qs --save

主要有parse()和stringify()两个方法

parse()

将url中的参数转为对象

const url = 'method=query_sql_dataset_data&projectId=85&appToken=7d22e38e-5717-11e7-907b-a6006ad3dba0';
// 转为对象
console.log(qs.parse(url));

stringify()

qs.stringify()将对象 序列化成URL的形式,以&进行拼接

var a = {name:'hehe',age:10};
 qs.stringify(a)// 'name=hehe&age=10'

备注

1、注意区分 qs.stringify和JSON.stringify(),都是把对象的类型转换成另外一种类型, JSON.stringify是正常类型的JSON

var a = {name:'hehe',age:10};
JSON.stringify(a)
// '{"name":"hehe","age":10}'

2、当我们需要传递数组的时候,我们就可以通过下面方式进行处理

默认情况下,它们给出明确的索引,如下代码:

qs.stringify({ a: ['b', 'c', 'd'] });
// 'a[0]=b&a[1]=c&a[2]=d'

也可以进行重写这种默认方式为false

qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false });
// 'a=b&a=c&a=d'

当然,也可以通过arrayFormat 选项进行格式化输出

qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' })
// 'a[0]=b&a[1]=c'
qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' })
// 'a[]=b&a[]=c'
qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' })
// 'a=b&a=c'

十二、mockjs:为我们生成随机数据的工具库

因为后台我们现在还没有搭建,无法与前端完成数据交互,因此我们这里需要mock数据,因此我们引入mockjs(http://mockjs.com/),方便后续我们提供api返回数据。

安装

cnpm install mockjs --save-dev

然后我们在src目录下新建mock.js文件,用于编写随机数据的api

const Mock = require('mockjs')

let Result = {
  code: 200,
  msg: '操作成功',
  data: []
};


/*元素列表*/
Mock.mock('/dmpElement/getElements','get',()=>{
  Result.data=[
    {
      "id": 1,
      "elementName": "元素1"
    },
    {
      "id": 2,
      "elementName": "元素2"
    },
    {
      "id": 3,
      "elementName": "元素3"
    }
  ];
  return Result;
})

然后我们需要在main.js中引入这个文件

require("./mock") //引入mock数据,正式服关闭则注释该行

十三、解决跨域

当前根目录下创建一个vue.config.js

/**
 *代理
 * 当有/api请求时 访问地址是http://xxx,
 * 由于配置的跨域请求http://xxx时候会自动转成localhost:8080
 */
module.exports = {
    devServer: {
        open: true,
        host: 'localhost',
        port: 8080,
        https: false,
        hotOnly: false,
        proxy: {
            '/api': {
                target: 'http://xxx',
                ws: true,
                changeOrigin: true,
                pathRewrite: {
                    '^/api': ''
                }
            }
        }
    }
}

十四、@使用建议

十五、nprogress使用

安装

npm install --save nprogress

在拦截器中使用

十六、发布时候移除console语句

安装插件

npm install babel-plugin-transform-remove-console --save-dev

在babel.config.js配置

//定义项目发布阶段时的babel插件
const prodPlugins = []
if(process.env.NODE_PATH === 'production'){
  prodPlugins.push('transform-remove-console')

}
module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ],
  plugins:  [
      //发布产品时的插件数据
    ...prodPlugins
  ]
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue开发项目 的相关文章

  • CSS 比例和方形中心裁剪图像

    所以我的应用程序中有一个缩略图集合 其大小为200x200 有时原始图像没有这个比例 所以我计划将此图像裁剪为正方形 目前它只是拉伸图像以适合缩略图 所以说我的原始图像大小是400x800 那么图像看起来就很压扁 我想裁剪此图像 以便它查看
  • 为什么 foo.hasOwnProperty('__proto__') 等于 false?

    var foo bar 5 Why is foo hasOwnProperty proto 等于false 它不能来自原型链中更高层的任何对象 因为它是特定于这个对象的 EDIT 有些答案说它已开启Object prototype 但我不明
  • 在气球内显示带有照片的多个地标的最佳做法是什么?

    我有一个项目如下 从手机上拍摄几张照片 将照片保存在网络系统中 然后将照片显示在其中的谷歌地球上 我读过很多文章 但它们都使用 fetchKml 我读过的一篇好文章是使用 php 但使用 fetchKml 我不知道是否可以使用 parseK
  • Firefox(仅限)动态表单操作不起作用

    控制台为操作属性返回空白 我已经移动了 file upload attr action io cfm action updateitemfile item id agenda modal attr data defaultitemid 周围
  • 定时器内嵌套异步等待 - 不返回所需的值

    我必须使用 Mocha 和 chai 测试来测试端点的响应 下面是相同的代码 async function getData userId let response let interval setInterval async gt resp
  • 页面其余部分完成加载后延迟加载 html5 视频

    我有一个视频元素用作我正在构建的页面底部部分的背景 我试图通过将 src 存储为 data src 属性并使用 jQuery 在其他资源加载后将其应用到 src 属性 因为它不是英雄图像或任何东西 我想加载海报以节省加载时间 然后稍后加载视
  • 如何在 Material UI 的 webpack 构建中包含 Roboto 字体?

    For a 进步网络应用程序基于材质用户界面 http www material ui com 反应 并构建Webpack 我如何正确包含 Roboto 字体 以便该应用程序不依赖于 Google 服务器并且字体也可以工作offline T
  • 为什么有人将(Apache mod_expires 参数)ExpiresByType 设置为“访问加 0 秒”?

    在审查答案时这个帖子 https stackoverflow com questions 9933012 how to use mod headers and mod expires to cache 我不明白为什么这里使用 0 秒作为最佳
  • 在 JavaScript 中引用 C# 变量

    我已经阅读了很多线程 但我不明白为什么这不起作用 我正在创建一个将用作导航栏的 SharePoint Web 部件 一切都很顺利 直到我尝试在 JS 代码中引用 C 变量 这是来自 VisualWebPart1UserControl asc
  • Antd 选择搜索框未呈现匹配项

    我有产品数据 我正在使用搜索值过滤数据 然后使用过滤后的数据呈现选项 产品数据作为道具来自全局 redux 存储 由于某种原因 下拉列表仅在搜索值为空时显示数据 当我开始输入时 filteredData已更新 组件也重新渲染 但选项不显示任
  • 无法安装js-bson

    我正在使用Windows 7 64位 尝试安装bson作为mongodb的依赖项 我收到此错误 npm WARN package json email protected cdn cgi l email protection No READ
  • FB.getLoginStatus() 不起作用

    我正在尝试编写一段代码来检查用户是否登录 发现FBJS API中有一个内置方法 叫做getLoginStatus 我已经在html中实现了它 但出于某种原因 getLoginStatus 内部的alert 不会被触发 我也尝试在 init
  • Sentry 与 @sentry/webpack-plugin 和 heroku

    我正在使用 webpack 来构建我的应用程序 它可以在本地使用 sentry webpack plugin 它自动生成版本并将源映射上传到 Sentry 但是 如果我尝试在 Heroku 上构建相同的应用程序 则会出现以下错误 Error
  • Google 折线图添加对象数组

    我有一个通过解析 JSON 字符串创建的对象数组 var measurementData Html Raw JsonConvert SerializeObject this Model Item1 var stringifiedData J
  • 如何在javascript中设置从数据库输入的最大数量?

    我希望根据数据库中的数量设置 输入类型 数字 中输入的最大数量 目前 我正在尝试让它在数据最大的基础上工作 然后再尝试从数据库中获取最大值 但它似乎无法工作 之前已经在这里问过 但我仍然无法理解 在 php javascript 中设置数据
  • 在javascript中我们如何识别一个对象是Hash还是Array?

    我的 JSON 调用的输出可以是数组或哈希 我如何区分这两者 现代浏览器支持Array isArray obj method See MDN https developer mozilla org en US docs Web JavaSc
  • 将响应式网格布局转换为 Plotly Dash

    我是一个非常活跃的 Dash 用户 我开始发现 Dash 使用中存在很多限制 并且我意识到有关如何将组件转换为 Dash 的信息 内容绝对有限 并且示例过时且非常简单 并且我对 Javascript 或 React 几乎没有任何了解 我完全
  • IE 中带有“删除”方法的 jQuery.ajax 问题

    我有一个页面 用户可以使用按钮编辑各种内容并选择触发 ajax 调用 特别是 一个操作会导致远程调用一个 url 其中包含一些数据和 放置 请求 这 因为我使用的是宁静的 Rails 后端 会触发我的更新操作 我还有一个删除按钮 它调用相同
  • 类型错误:无法读取未定义的属性“长度” - 使用安全帽部署时

    我在尝试在安全帽开发链上部署模拟合约时收到以下错误 我正在关注 使用 JavaScript 学习区块链 Solidity 和全栈 Web3 开发 Patrick Collins 在 FreeCodeCamp YT 频道上的 32 小时课程
  • CSS 未使用 req.params 或其他内容加载

    我对节点 表达等非常陌生 我制作了一个博客应用程序 但遇到了问题 我正在使用 mongoose node express 和 ejs 当我打电话时 router get posts function req res Post find fu

随机推荐

  • Stm32最小系统板电路图设计、PCB设计

    目录 一 电路设计 1 复位电路 2 时钟电路 3 电源电路 4 SWD接口电路 5 BOOT启动电路 二 原理图绘制 1 工程的建立 2 原理图的绘制 2 1 使用已有库绘制原理图 2 2 构建原理图库 2 3 整体原理图 三 PCB绘制
  • Java堆和栈

    Java堆和栈是Java程序中两个重要的数据结构 它们在程序的运行过程中发挥着重要的作用 本文将介绍Java堆和栈的基本概念 区别 操作以及应用场景 帮助读者更好地理解和应用这两个数据结构 一 基本概念 Java堆 Heap 和栈 Stac
  • vue+elementui 登录页面

    vue elementui 登录页面 html代码
  • Windows 终端 Terminal 配置

    文章目录 Windows 终端 Terminal 配置 修改默认启动的命令 添加 cmder 到 Windows Terminal 添加 git bash 到 Windows Terminal 为Windows PowerShell 配置别
  • vue3.0+elementplus table动态添加column

  • 【Vuex】前后端分离Vue路由拦截器与登录cookie保存

    文章目录 1 Vuex 初探 1 1 vuex 介绍 1 2 store 的使用 2 localStorage使用 2 1 localStorage介绍 2 2 localStorage语法 3 路由钩子函数 导航守卫 3 1 导航守卫介绍
  • 固定资产预算怎么管理的

    在现代企业管理中 固定资产预算的管理是一项至关重要的任务 它不仅关系到企业的经济效益 更关系到企业的长远发展 那么 如何进行有效的固定资产预算管理呢 明确固定资产预算的目标和原则 我们需要明确固定资产预算的目标和原则 固定资产预算的目标应该
  • 利用谷歌的预训练模型实现目标检测object_detection_tutorial.ipynb

    环境准备 运行这个预训练的模型需要准备一些环境 首先需要下载谷歌的models master zip 地址在https github com Master Chen models 下载完成后我们需要的是research objection
  • Java基于微信小程序的一起考研学习平台

    第一章 简介 本文研究了基于微信小程序一起考研学习平台 通过该系统 用户可以主动的在线学习 下载资料 解决实际的问题 提高了效率 同时加强了用户之间的相互交流沟通 促进了信息化的发展 本文研究开发的小程序是学习并上传下载的小程序 开发完成后
  • steam成就解锁器_SAM解锁steam成就教程科普

    SAM全称为SteamAchievementManager 是一款一键解锁steam成就的工具 能够方便快捷的解锁steam游戏成就 图文使用教程 先登录steam 然后打开SAM读取你steam库存游戏 会出现这个界面 图1 登录stea
  • Nginx中if条件语句不支持proxy_set_header的解决方案

    转 Nginx中if条件语句不支持proxy set header的解决方案 CHEGVA 最近开发有个需求 需要通过一个域名加国家地区代码跳转到不同机房的服务 由于中间还要走一层ingress 需要设置下指定域名的头 ingress才能打
  • Node.js 安装与版本管理(nvm 的使用)

    安装 Node js Node js 诞生于 2009 年 5 月 截至今天 2022 年 3 月 26 号 的最新版本为 16 14 2 LTS 和 17 8 0 Current 可以去官网下载合适的版本 其中 LTS Long Term
  • 一)pytorch框架与环境搭建

    一 初识pytorch框架 为什么选择pytorch 活跃度高 逐渐形成完整的开发生态 资源多 动态图结构 运行速度较快 代码简洁 易于理解调试 简单 学习成本低 可能遇到的问题 深度学习框架太多要如何选择 开源代码很多家 但阅读修改起来非
  • WP7中,在后台c#代码中控制Grid

    有时候需要在后台代码中修改Grid布局 大概实现代码如下 代码很简单 如果在xmal中改过布局应该一看就明白 操作方法 创建一个默认页面 后台代码中加如下代码 public partial class Page3 PhoneApplicat
  • Global CORS configuration

    Global CORS configuration As an alternative to fine grained annotation based configuration you can also define some glob
  • 关于微信小程序:封装请求

    点这里 查看进阶版请求封装 拦截器 处理token过期之后的无感知登录 重新发起刚才未成功的请求 新建一个文件夹request 随便起 新建env js 2 1 在这里 配置接口地址的公共地址部分 方便后续引用 这里使用的接口呢都是自己模拟
  • java文件对比7,一个线程读一个线程写、返回给前端进度条数据

    java文件对比 controller Service Serviceimpl 读取文件多线程工具类 对比文件多线程工具类 控制台结果 返回结果 进度条结果 个人总结 这个其实写的是有点问题的 想的是一个线程读 多个线程对比 结果写的是一个
  • Spring Boot:使用Actuator监控端点

    1 Actuator依赖
  • vivado保存ila的波形

    1 保存ila数据的TCL命令 write hw ila data E yourpath name ila ila upload hw ila data hw ila 4 注意 目录中不能有space 中文 name ila为保存的文件名
  • vue开发项目

    一 环境安装 1 概述 1 若只写个vue的简单demo程序 那么只需在html中引入vue js即可 没必要安装node npm webpack以及Vue cli 2 如果开发大型项目 就需要vue cli完成项目目录结构 部署 热加载等