Vue新建项目+git托管+初始配置+项目打包优化

1、已全局安装vue-cli和nodejs(第一次需要)

2、利用Vue-cli创建项目

  • 打开项目所在文件夹
  • vue create ‘项目名’
  • 选择手动配置

babel:js编辑器
typeScript:超集js【需要指定数据类型】
PWA:离线可用
Linter/Formatter:约束代码规范,配合eslint
unit/e2e testing:测试
在这里插入图片描述
在这里插入图片描述

3、git远程仓库初始化(创建并添加公钥,配一次即可)

4、本地项目托管

  • 新建仓库,给仓库命名即可,无任何勾选
  • 第二次新建仓库,不需要再git全局设置
  • 已经创建了项目,进入vscode终端(管理员)(or cmd进入项目路径)
  • git init
  • 执行橙色代码(第一句表示远程仓库地址,第二句表示首次推送主分支到云端仓库,origin为云仓库别名)

在这里插入图片描述

5、项目文件夹

node_modules:放置项目依赖的地方
public:一般放置一些共用的静态资源,包括页签图标、index.html,打包上线的时候,public文件夹里面资源原封不动打包到dist文件夹里面;<%= BASE_URL %>是public所在路径,使用绝对路径

脚手架目录public和assets区别:参考链接
在这里插入图片描述

src:程序员源代码文件夹

  • assets文件夹:经常放置一些静态资源(图片),assets文件夹里面资源webpack会进行打包为一个模块(js文件夹里面)
  • components文件夹:一般放置非路由组件(或者项目共用的组件)
  • App.vue 唯一的根组件
  • main.js 入口文件【程序最先执行的文件】
  • babel.config.js:babel配置文件【翻译官:如ES6翻译成ES5,兼容好】
  • package.json:应用包配置文件;看到项目描述、项目依赖、项目运行指令【项目信息记录:‘项目身份证’】
  • package-lock.json: 包版本控制文件
  • .gitignore: git版本管制忽略的配置
  • README.md:项目说明文件

补充:通过 vue.config.js 可以修改 webpack 的默认配置
在这里插入图片描述

6、初始配置

a. 浏览器自动打开html,vue-cli-service serve --open

package.json文件中
        "scripts": {
         "serve": "vue-cli-service serve --open",
          "build": "vue-cli-service build",
          "lint": "vue-cli-service lint"
        },

b.关闭eslint校验工具

创建vue.config.js文件:需要对外暴露
module.exports = {
   lintOnSave:false,
}

c. src文件夹的别名的设置 【@表示src文件夹,@在"node_modules","dist"不能用】

创建jsconfig.json文件
{
    "compilerOptions": {
        "baseUrl": "./",
        "paths": {
            "@/*": [
                "src/*"
            ]
        }
    },
    "exclude": [
        "node_modules",
        "dist"
    ]
}

7、后台项目的环境安装配置;参考黑马项目

  • MySQL数据库;
  • Node.js环境【因为后台接口依赖Node.js】 Nodejs安装及环境配置链接
  • 安装API依赖包;
  • postman测试后台项目接口:【安装与使用见连接】
    https://blog.csdn.net/m0_61843874/article/details/123324727
    https://www.bilibili.com/video/BV1hP4y177gS/?spm_id_from=333.337.search-card.all.click&vd_source=c4d71976fd97f04545873bc4552dfb71
    选择好请求方式;输入URL;body——x-www-form-urlencoded(普通形式输入请求参数)

8、清除初始静态样式,梳理app.vue根组件在这里插入图片描述

9、清除初始路由配置;清除初始的路由组件和非路由组件

新建routes.js放路由规则在这里插入图片描述

10、生成项目报告

npm run build  -- --report

11、项目优化

  1. Vue项目在执行build命令期间中移除所有console.log 链接
  2. 通过 vue.config.js 可以修改 webpack 的默认配置
    在这里插入图片描述
  3. 为开发模式与发布模式指定不同的打包入口
    在这里插入图片描述
    3.1 打包入口的修改,可以通过 configureWebpack和 chainWebpack节点来实现:
    在这里插入图片描述
    3.2 通过 chainWebpack 自定义打包入口
    新建./src/main-prod.js和./src/main-dev.js文件;在vue.config.js进行如下配置
chainWebpack: config => {
    config.when(process.env.NODE_ENV === 'production',config=>{
      config.entry('app').clear().add('./src/main-prod.js')
    })
    config.when(process.env.NODE_ENV === 'development',config=>{
      config.entry('app').clear().add('./src/main-dev.js')
    })
  }
  1. 通过externals 加载外部 CDN 资源,对于externals中的第三方依赖包,在用到依赖包的时候,会找window全局对象上查找并直接使用现成的对象,能够让打包的项目体积更小;只有production模式才有必要配置externals节点

第一步:vue.config.js——>配置externals节点
在这里插入图片描述

//配置后的vue.config.js
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave:false,
  // 通过 chainWebpack 为开发模式与发布模式指定不同的打包入口
  chainWebpack: config => {
    // 发布模式
    config.when(process.env.NODE_ENV === 'production',config=>{
      config.entry('app').clear().add('./src/main-prod.js')

       // 通过externals 加载外部 CDN 资源
      config.set('externals',{
        vpe : ' Vue ',
        'vue-router': 'VueRouter',
        axios: 'axios',
        lodash: '_', 
        echarts: 'echarts',
        nprogress:'NProgress',
        'vue-quill-editor': 'VueQuillEditor'
      })
    })

    config.when(process.env.NODE_ENV === 'development',config=>{
      config.entry('app').clear().add('./src/main-dev.js')
    })
  }
})

第二步:导入的样式表也会被导入到输出文件中,导致体积大;临时注释掉main.prod.js中的import的VueQuillEditor样式表;进行如下配置;【注意版本号】
在这里插入图片描述
进一步添加js文件的CDN引用:
在这里插入图片描述

<!-- 富文本编辑器样式表文件 -->
    <link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.7/quill.core.min.css"/>
    <link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.7/quill.snow.min.css" />
    <link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.7/quill.bubble.min.css"/>

    <script src="https://cdn.staticfile.org/vue/2.6.14/vue.min.js"></script>
    <!-- <script src="https://cdn.staticfile.org/vue-router/3.5.1/vue-router.min.js"></script> -->
    <script src="https://cdn.staticfile.org/axios/1.3.4/axios.min.js"></script>
    <script src="https://cdn.staticfile.org/lodash.js/4.17.21/lodash.min.js"></script>
    <script src="https://cdn.staticfile.org/echarts/5.4.1/echarts.min.js"></script>
      <!-- 富文本编辑器的 js 文件 -->
    <script src="https://cdn.staticfile.org/quill/1.3.7/quill.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/vue-quill-editor@3.0.6/dist/vue-quill-editor.js"></script> 
  1. .通过 CDN 优化 ElementUl 的打包

第一步:在这里插入图片描述

<!-- element-ui的样表文件-->
    <link rel="stylesheet" href="https://cdn.staticfile.org/element-ui/2.15.13/theme-chalk/index.css" />
    <!-- element-ui的 js 又件-->
    <script src="https://cdn.staticfile.org/element-ui/2.15.13/index.js"></script>

第二步:临时注释掉
// 引入自定义插件 (封装element按需引入模块)
// import element from ‘./plugins/element’

  1. 首页内容定制(根据production模式和development模式定制)
    不同的打包环境下,首页内容可能会有所不同,我们可以通过插件的方式进行定制;
    isProd的值为True表示production模式,为FALSE表示development模式;

第一步:对vue.config.js中chainWebpack的属性进行调整:

// 通过 chainWebpack 为开发模式与发布模式指定不同的打包入口
  chainWebpack: config => {
    // 1、发布模式
    config.when(process.env.NODE_ENV === 'production',config=>{
      config.entry('app').clear().add('./src/main-prod.js')

       // 通过externals 加载外部 CDN 资源
      config.set('externals',{
        vue : ' Vue ',
        'vue-router': 'VueRouter',
        axios: 'axios',
        lodash: '_', 
        echarts: 'echarts',
        'vue-quill-editor': 'VueQuillEditor'
      })

      // 不同的打包环境下,首页内容可能会有所不同
      // 我们可以通过插件的方式进行定制,根据isProd的值,来决定如何染页面结构,发布模式插件配置如下:
      config.plugin('html') .tap(args => {
        args[0].isProd = true
        return args
      })
    })

    // 2、开发模式
    config.when(process.env.NODE_ENV === 'development',config=>{
      config.entry('app').clear().add('./src/main-dev.js')

      // 不同的打包环境下,首页内容可能会有所不同
      // 我们可以通过插件的方式进行定制,根据isProd的值,来决定如何染页面结构,开发模式插件配置如下:
      config.plugin('html').tap(args => {
        args[0].isProd = false
        return args
      })
    })
  }

第二步:在public/index.html首页中,可以根据isProd的值,来决定如何染页面结构

<title><%=htmlWebpackPlugin.options.isProd?'':'dev-' %>电商后台管理系统</title>

<!-- 在production模式下isProd = true,会获取CDN里的依赖资源,development模式下isProd = false,用本地下载的依赖 -->
<% if(htmlWebpackPlugin.options.isProd){ %>
	前面CDN引入的依赖资源(富文本编辑器+elemen-ui)
<% } %>

前面CDN引入的依赖资源(富文本编辑器+elemen-ui),代码如下:
	<!-- 富文本编辑器样式表文件 -->
    <link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.7/quill.core.min.css"/>
    <link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.7/quill.snow.min.css" />
    <link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.7/quill.bubble.min.css"/>

    <script src="https://cdn.staticfile.org/vue/2.6.14/vue.min.js"></script>
    <script src="https://cdn.staticfile.org/vue-router/3.5.1/vue-router.min.js"></script>
    <script src="https://cdn.staticfile.org/axios/1.3.4/axios.min.js"></script>
    <script src="https://cdn.staticfile.org/lodash.js/4.17.21/lodash.min.js"></script>
    <script src="https://cdn.staticfile.org/echarts/5.4.1/echarts.min.js"></script>
      <!-- 富文本编辑器的 js 文件 -->
    <script src="https://cdn.staticfile.org/quill/1.3.7/quill.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/vue-quill-editor@3.0.6/dist/vue-quill-editor.js"></script> 

    <!-- element-ui的样表文件-->
    <link rel="stylesheet" href="https://cdn.staticfile.org/element-ui/2.15.13/theme-chalk/index.css" />
    <!-- element-ui的 js 又件-->
    <script src="https://cdn.staticfile.org/element-ui/2.15.13/index.js"></script>

第三步:由于对首页内容根据production模式和development模式进行了定制,需要将前面注释掉的富文本编辑器样式,以及element-ui样式引入取消注释,最终项目会根据不同模式展示首页

7. 路由懒加载
当打包构建应用时,JavaScript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后**[当路由被访问的时候才加载对应组件**],这样就会更加高效。

在这里插入图片描述

简化:
不需要在route.js文件 import UserDetails from ‘./views/UserDetails.vue’;直接路由懒加载
{
name:‘search’, //商品搜索
path:‘/search’,
component:()=>import(‘@/pages/Search’), [路由被访问才加载组件]
}
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值