集成vue-router

使用yarn

yarn add vue-router@next --save

安装完成之后在src目录下创建文件夹router/index.ts,创建完成之后需要在Vue-Router中对Vue-Router进行初始化配置。我们暂时把初始化的工作搁置一下,先需要创建pages文件夹,把需要展示的页面创建完成。

创建完成之后,接下来就是完善router/index.ts中文件的初始化工作了:

  1. import { createRouter, createWebHashHistory } from "vue-router";
  2.  
  3. const router = createRouter({
  4. history: createWebHashHistory(),
  5. routes: [
  6. {
  7. path: "/home",
  8. name: "Home",
  9. alias: "/",
  10. component: () => import("../pages/Home.vue")
  11. },
  12. {
  13. path: "/about",
  14. name: "About",
  15. component: () => import("../pages/About.vue")
  16. }
  17. ]
  18. })
  19.  
  20. export default router;

接下来在main.ts文件中集成Vue-Router

  1. import { createApp } from 'vue';
  2. import App from './App.vue';
  3.  
  4. import router from "./router";
  5.  
  6. const app = createApp(App);
  7. app.use(router);
  8. app.mount('#app');

测试一下,这里修改一下App.vue的代码,测试一下我们的路由是否已经可以正常使用了。

  1. <template>
  2. <router-link to="/home">Home</router-link>
  3. <router-link to="/about">About</router-link>
  4. <router-view></router-view>
  5. </template>
  6.  
  7. <script lang="ts">
  8. import { defineComponent } from 'vue'
  9.  
  10. export default defineComponent({
  11. name: 'App'
  12. })
  13. </script>

接下来启动服务就可以看到所配置的页面了,说明配置的路由已经生效了。

集成Vuex

使用 Yarn

yarn add vuex@next --save

安装完成之后,首先添加store/index.ts来初始化Vuex。需要注意的是,如下示例使用了Vuex命名空间。可能在实际项目中使用命名空间相对来说还是比较普遍的,避免进行状态管理的时候导致变量污染。

  1. import { createStore } from "vuex";
  2.  
  3. const store = createStore({
  4. modules: {
  5. home: {
  6. namespaced: true,
  7. state: {
  8. count: 1
  9. },
  10. mutations: {
  11. add(state){
  12. state.count++;
  13. }
  14. }
  15. }
  16. }
  17. })
  18.  
  19. export default store;

集成到Vue中:

  1. import { createApp } from 'vue';
  2. import App from './App.vue';
  3.  
  4. import router from "./router";
  5. import store from "./store";
  6.  
  7. const app = createApp(App);
  8. app.use(router);
  9. app.use(store);
  10. app.mount('#app');

现在Vuex就已经被集成到Vue中了为了保证集成的Vuex是有效地,那么需要对此进行测试:

pages/Home.vue

  1. <template>
  2. <h1>Home</h1>
  3. <h2>{{count}}</h2>
  4. <button @click="handleClick">click</button>
  5. </template>
  6.  
  7. <script lang="ts">
  8. import { defineComponent, computed } from 'vue';
  9. import { useStore } from 'vuex';
  10.  
  11. export default defineComponent({
  12. setup () {
  13. const store = useStore();
  14. const count = computed(() => store.state.home.count);
  15. const handleClick = () => {
  16. store.commit('home/add');
  17. };
  18. return {
  19. handleClick,
  20. count
  21. };
  22. }
  23. })
  24. </script>

当点击按钮的时候,就可以发现count值也随着点击每次递增,那么store是可以正常使用.

引入Vant框架

这边使用的是vant3.0框架

引入按需加载插件

  1. yarn add vant@next -S
  1. yarn add vite-plugin-style-import -D

配置按需加载

vite.config.ts中配置

  1. import styleImport from 'vite-plugin-style-import'
  2. plugins: [
  3. vue(),
  4. styleImport({
  5. libs: [{
  6. libraryName: 'vant',
  7. esModule: true,
  8. resolveStyle: (name) => {
  9. return `vant/es/${name}/style/css`;
  10. },
  11. }]
  12. })
  13. ]

main.ts中配置

  1. import Vant from 'vant'
  2. import 'vant/lib/index.css'
  3.  
  4. const app = createApp(App)
  5. app.use(Vant)
  6. app.mount('#app')

按需加载有待完善,目前是配置CDN加载

vite.config.ts中配置

  1.      {
  2. name:'vue',
  3. var:'Vue',
  4. path:'https://cdn.jsdelivr.net/npm/vue@next'
  5. },
  6. {
  7. name:'vant',
  8. var:'vant',
  9. css: 'https://cdn.jsdelivr.net/npm/vant@next/lib/index.css',
  10. path:'https://cdn.jsdelivr.net/npm/vant@next/lib/vant.min.js'
  11. }

main.ts中正常引用

  1. import Vant from 'vant'
  2. app.use(Vant)

CDN配置

  1. yarn add vite-plugin-cdn-import -D

vite.config.ts配置示例文件如下

  1. import importToCDN, { autoComplete } from 'vite-plugin-cdn-import'
  2. plugins: [
  3. vue(),
  4. importToCDN({
  5. modules: [
  6. autoComplete('lodash'),
  7. {
  8. name:'ant-design-vue',
  9. var:'antd',
  10. path:'https://cdn.jsdelivr.net/npm/ant-design-vue@2.2.0-beta.6/dist/antd.js',
  11. css:'https://cdn.jsdelivr.net/npm/ant-design-vue@2.2.0-beta.6/dist/antd.min.css'
  12. }
  13. ]
  14. })
  15. ]

自动完成(autoComplete)支持的模块如下:

  1. "react" | "react-dom" | "react-router-dom" |
  2. "antd" | "ahooks" | "@ant-design/charts" |
  3. "vue" | "vue2" | "@vueuse/shared" |
  4. "@vueuse/core" | "moment" |
  5. "eventemitter3" | "file-saver" |
  6. "browser-md5-file" | "xlsx | "crypto-js" |
  7. "axios" | "lodash" | "localforage"

分包配置

在vite.config.ts的build中做如下配置

  1. rollupOptions: {
  2. treeshake: false,
  3. output: {
  4. manualChunks (id) {
  5. if (id.includes('node_modules')) {
  6. return id.toString().split('node_modules/')[1].split('/')[0].toString()
  7. }
  8. }
  9. }
  10. }

参考:Vite开发环境搭建

vue3.0+vite+ts项目搭建--基础配置(二)的更多相关文章

  1. vue3.0+vite+ts项目搭建--初始化项目(一)

    vite 初始化项目 使用npm npm init vite@latest 使用yarn yarn create vite 使用pnpm pnpx create-vite 根据提示输入项目名称,选择v ...

  2. vue3.0+vite+ts项目搭建--vite.config.ts配置(三)

    vite.config.ts配置 配置路径处理模块 安装ts的类型声明文件 yarn add @types/node -D 通过配置alias来定义路径的别名 resolve: { alias: { ...

  3. vue3.0+vite+ts项目搭建-postcss-pxtorem 实现移动自适应(五)

    这里不考虑大屏,所以不做amfe-flexible的配置 首先是安装依赖 yarn add postcss-loader postcss-pxtorem -D yarn add autoprefixe ...

  4. vue3.0+vite+ts项目搭建-分环境打包(四)

    分环境打包配置 新建.env.dev(或者.env) VITE_NODE_ENV = 'dev' VITE_HOST = 'http://local.host.com' 执行yarn dev ,控制台 ...

  5. vue3.0+vite+ts项目搭建(报错处理)

    报错一 warning package.json: No license field$ vue-tsc --noEmit && vite build 解决方案,添加这两行,只添加一个是 ...

  6. vue3.0+vite+ts项目搭建-axios封装(六)

    封装方式一 import axios from 'axios' import qs from 'qs' import { Toast } from 'vant' import Lockr from ' ...

  7. Asp.Net Core 项目搭建 基础配置 和MySql 的使用

    一.开发环境准备 1.安装Visual Studio 2015,我这里安装的是专业版. 2.安装.NET Core SDK相关 需要安装  Visual Studio 2015 update3和NET ...

  8. vite + ts 快速搭建 vue3 项目 以及介绍相关特性

    博客地址:https://ainyi.com/98 Vue3.0,One Piece 接下来得抽空好好学习了 vite 尤大在 Vue 3.0 beta 直播中推荐了 vite 的工具,强调:针对Vu ...

  9. vue3.0脚手架 创建项目

    1.下载node最新稳定版本,并且安装 2.安装好之后,在cmd或者terminal下, 使用npm -v 查看当前npm版本,验证是否安装成功 3.安装成功后,运行 npm i -g @vue/cl ...

随机推荐

  1. antd动态的表格合并(包含排序功能)

    主要是两个步骤, 1.处理接口返回数据,给其添加两个属性,一个是合并行数(列数),一个是当前数据的序号 2.在columns结合antd官网的处理方法合并表格 3.尽可能得减少计算量 数据处理函数 / ...

  2. 估计工期标识(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 有时候吧,我们遇到的任务,工期并不是那么好定的,本来嘛,一个项目如果全靠拍脑袋,最后搞不好会被人锤脑袋-- 看来PM有风险 ...

  3. AT5341 [ABC156D] Bouquet 题解

    Content 有一个人有 \(n\) 种不同的话可供选择,TA 可以选择至少一种花做花束,但是 TA 不喜欢花的种数为 \(a\) 或者 \(b\) 的花束.求选花的方案数对 \(10^9+7\) ...

  4. IDEA添加yaml自动补全语法插件

    问题:编写yml文件的时候,系统不能给自动补全 解决办法:File---->Settings---->Plugins---->搜索Spring Assistant x 项目效果预览

  5. JAVA中价格金额的存储类型

    在java项目中,我们会遇到价格.金额的数据,这时候我们java中应该用BigDecimal类型,数据库用decimal类型, 长度可以自定义, 如18; 小数点我们项目中用的是2, 保留2位小数. ...

  6. 基于 SoC 的卷积神经网络车牌识别系统设计(0)摘要

    ​NOTES:现如今,芯片行业无比火热啊,无论是前景还是钱景,国家芯片战略的发布,公司四五十万的年薪,着实令人非常的向往,为了支持芯片设计者,集成了工作.科研.竞赛于一体的<基于 SoC 的卷积 ...

  7. 网络编程之新函数inet_pton和inet_ntop

    1.头文件 1 #include <arpe/inet.h> 2.inet_pton 函数 A.原型 1 int inet_pton(int family, const char *str ...

  8. 【九度OJ】题目1138:进制转换 解题报告

    [九度OJ]题目1138:进制转换 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1138 题目描述: 将一个长度最多为30 ...

  9. github项目托管方式(看项目自身是否自带有 .git)

    一.本地仓库和远程仓库建立联系 方式一:项目自身带有 .git文件的[自身就是一个本地仓库的](这里咱以vue-cli3项目为例) 1.创建自带.git本地仓库:创建一个叫 my-vue 的项目 2. ...

  10. 牛客练习赛44 C:小y的质数

    链接:https://ac.nowcoder.com/acm/contest/634/C?tdsourcetag=s_pcqq_aiomsg 来源:牛客网 题目描述 给出一个区间\([L,R]\),求 ...