文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用Vite2+TypeScript4+Vue3技术栈,如何入手开发项目

2024-12-03 09:16

关注

实战

我们,打开Vite官方网站(https://cn.vitejs.dev/)。

这里,我们将Vite与VueCLI做一下对比。

搭建项目

我们来搭建第一个 Vite 项目,我这里使用Yarn依赖管理工具进行创建项目。

  1. yarn create @vitejs/app 

在命令行键入以上命令,然后你可能会等待一会儿~

依次配置Project name、Select a template

  1. Project name: vite-vue-demo 
  2.  
  3. Select a template: vue-ts 

因为,我们这里要是用Vue+Ts开发项目所以我们选择vue-ts这个模板。一顿操作之后,会提示你键入以下命令,依次填入即可。

  1. cd vite-vue-demo 
  2. yarn 
  3. yarn dev 

这样我们搭建项目就完成了。

项目文件夹一览

我们会看到以下文件及其文件夹。

  1. node_modules  ---依赖文件夹 
  2. public  ---公共文件夹 
  3. src  ---项目主要文件夹 
  4. .gitignore  ---排除git提交配置文件 
  5. index.html  ---入口文件 
  6. package.json  ---模块描述文件 
  7. tsconfig.json  ---ts配置文件 
  8. vite.config.ts  ---vite配置文件 

开发前配置

在开发之前呢,我们需要做以下工作。

1. 编辑ts配置文件

根据需要,配置需要的配置项。compilerOptions里面配置的是编译时的配置项,include项是配置生效包括在内的路径,而exclude则恰恰相反,排除在外的路径。

  1.   "compilerOptions": { 
  2.     "target""esnext"
  3.     "module""esnext"
  4.     "strict"true
  5.     "jsx""preserve"
  6.     "importHelpers"true
  7.     "moduleResolution""node"
  8.     "experimentalDecorators"true
  9.     "skipLibCheck"true
  10.     "esModuleInterop"true
  11.     "allowSyntheticDefaultImports"true
  12.     "sourceMap"true
  13.     "baseUrl""."
  14.     "types": ["vite/client"], 
  15.     "paths": { 
  16.       "@*.ts"
  17.     "src*.tsx"
  18.     "src*.vue"
  19.     "tests*.ts"
  20.     "tests*.tsx" 
  21.   ], 
  22.   "exclude": [ 
  23.     "node_modules" 
  24.   ] 

2. 配置vite配置文件

为什么需要配置这个文件呢?是因为我们开发这个demo项目,需要局部引入Element Plus UI框架,另外,让我们简单了解下怎么配置Vite。在之前我们使用VueCLI3.x创建项目时配置项目是在根目录下vue.config.js文件下进行配置。这个文件应该导出一个包含了选项的对象。

  1. module.exports = { 
  2.   // 选项... 

而vite.config.ts也与其相似。

  1. export default { 
  2.   // 配置选项 

因为 Vite 本身附带 Typescript 类型,所以可以通过 IDE 和 jsdoc 的配合来进行智能提示,另外你可以使用 defineConfig 帮手函数,这样不用 jsdoc 注解也可以获取类型提示。这里呢,我们这样配置vite.config.ts。

  1. import { defineConfig } from 'vite' 
  2. import vue from '@vitejs/plugin-vue' 
  3.  
  4. // https://vitejs.dev/config/ 
  5. export default defineConfig({ 
  6.   plugins: [vue()] 
  7. }) 

你会发现,Vue在这里被当做vite的一个内置插件引入进来。刚才,我们说要局部引入Element Plus UI框架,我们打开Element Plus UI局部引入网址:(https://element-plus.gitee.io/#/zh-CN/component/quickstart),发现这里需要配置babel.config.js,而我们使用的是TS,所以我们下意识的更改下后缀名觉得就可以成功了,不过,我反正被坑了。于是,采取了这种办法:在vite.config.ts文件中这样配置:

  1. import { defineConfig } from 'vite' 
  2. import vue from '@vitejs/plugin-vue' 
  3. import vitePluginImp from "vite-plugin-imp"
  4.  
  5. // https://vitejs.dev/config/ 
  6. export default defineConfig({ 
  7.   plugins: [vue(), 
  8.     vitePluginImp({ 
  9.     libList: [ 
  10.       { 
  11.         libName: 'element-plus'
  12.         style: (name) => { 
  13.           return`element-plus/lib/theme-chalk/${name}.css` 
  14.         } 
  15.       } 
  16.     ] 
  17.   })], 
  18.   server: { 
  19.     port: 6061 
  20.   }, 
  21. }) 

vite-plugin-imp一个自动导入组件库样式的vite插件。

主要项目文件夹Src一览

以下是最初始的项目文件目录。

  1. assets  ---静态文件夹 
  2. components  ---组件文件夹 
  3. App.vue  ---页面文件 
  4. main.ts  ---项目入口文件 
  5. shims-vue.d.ts  ---类型定义文件(描述文件) 

这么多文件,我们不一一展示了,主要看下App.vue、main.ts、shims-vue.d.ts。

App.vue

  1.  
  2.  
  3. "ts"
  4. import { defineComponent } from 'vue' 
  5. import HelloWorld from './components/HelloWorld.vue' 
  6.  
  7. export default defineComponent({ 
  8.   name'App'
  9.   components: { 
  10.     HelloWorld 
  11.   } 
  12. }) 
  13.  
  14.  
  15.  

main.ts

  1. import { createApp } from 'vue' 
  2. import App from './App.vue' 
  3.  
  4. createApp(App).mount('#app'

shims-vue.d.ts

  1. declare module '*.vue' { 
  2.   import { DefineComponent } from 'vue' 
  3.   const component: DefineComponent<{}, {}, any
  4.   export default component 

这里,我们看到defineComponent这个Vue3的一个方法。为什么这里会使用它呢?引用官方的一句话:

引入vue-router4

看完之前的基础配置,我们现在准备开始引入Vue3的生态系统。

现在我们安装 vue-router 版本的时候,默认还是安装的 3.x 版本的,由于 vue3 的更新发生很大的变化,所以为了兼容处理,vue-router 也将发布最新版 4.x 版本了。

这是router4的官方网址:

  1. https://next.router.vuejs.org/ 

1. 安装

  1. npm install vue-router@4 

2. 配置文件

安装完依赖后,在项目文件夹src下创建一个router文件夹,里面创建一个index.ts文件(因为这里我们基于TS的项目)。

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

另外,你需要在main.ts文件中引入它,并且注册一下。

  1. import { createApp } from "vue"
  2. import App from "./App.vue"
  3. import router from "./router"
  4.  
  5. createApp(App).use(router).mount("#app"); 

为了实验一下效果,我们在src文件夹下创建一个views文件夹,里面创建两个页面文件。分别是About.vue和Home.vue。

home.vue

  1.  
  2.  
  3. "ts"
  4. import { Options, Vue } from "vue-class-component"
  5.  
  6. @Options({ 
  7.  
  8. }) 
  9. export default class Home extends Vue {} 
  10.  
  11.  
  12.  
  13. .txt{ 
  14.   color: red; 
  15.  

about.vue

  1.  
  2.  
  3.  

最后,你在App.vue文件中。

  1.  
  2.  
  3. "ts"
  4.  

这样,vue-router4就这么成功引入了。

引入css预处理语言

这里呢,我们引入scss。因为我们使用的vite这个构建工具构建的项目,所以我们只需要这样。

  1. npm install -D sass 

我们可以看到官方解释:

所以,你可以这样使用scss。

  1.  
  2.  
  3. "ts"
  4. import { Options, Vue } from "vue-class-component"
  5.  
  6. @Options({ 
  7.  
  8. }) 
  9. export default class Home extends Vue {} 
  10.  
  11.  
  12. "scss"
  13. .txt{ 
  14.   color: red; 
  15.  

使用Element Plus UI

我们在上面已经成功配置局部引入Element Plus框架,那我们可以这样使用它。

  1.  
  2.  
  3. "ts"
  4. import { Options, Vue } from "vue-class-component"
  5. import { ElButton } from 'element-plus' 
  6.  
  7. @Options({ 
  8.   components: { 
  9.     ElButton 
  10.   } 
  11. }) 
  12. export default class Home extends Vue {} 
  13.  
  14.  
  15. "scss"
  16. .txt{ 
  17.   color: red; 
  18.  

这里,你会发现引入了 vue-class-component这个组件,它是干什么的呢?

官方网址:

  1. https://class-component.vuejs.org/ 

译:Vue类组件是一个库,允许您以类样式语法创建Vue组件。

针对vue3版本,我们使用Vue Class Component v8,也就是8版本。

  1. https://www.npmjs.com/package/vue-class-component/v/8.0.0-rc.1 

你可以这样安装它。

  1. npm i vue-class-component@8.0.0-rc.1 

引入vue自定义组件

我们经常自己封装组件,那么在这个项目中我们是怎样引入的呢?我们在src目录下创建一个components文件夹,里面创建一个HelloWorld.vue文件。

HelloWorld.vue

  1.  
  2.  
  3. "ts"
  4. import { ref, defineComponent } from 'vue' 
  5. export default defineComponent({ 
  6.   name'HelloWorld'
  7.   props: { 
  8.     msg: { 
  9.       type: String, 
  10.       required: true 
  11.     } 
  12.   }, 
  13.   setup: () => { 
  14.     const count = ref(0) 
  15.     return { count } 
  16.   } 
  17. }) 
  18.  
  19.  
  20. "scss"
  21. a { 
  22.   color: #42b983; 
  23.  
  24. label { 
  25.   margin: 0 0.5em; 
  26.   font-weight: bold; 
  27.  
  28. code { 
  29.   background-color: #eee; 
  30.   padding: 2px 4px; 
  31.   border-radius: 4px; 
  32.   color: #304455; 
  33.  

然后,我们在App.vue引入它。

  1.  
  2.  
  3. "ts"
  4. import { defineComponent } from 'vue' 
  5. import HelloWorld from './components/HelloWorld.vue' 
  6.  
  7. export default defineComponent({ 
  8.   name'App'
  9.   components: { 
  10.     HelloWorld 
  11.   } 
  12. }) 
  13.  
  14.  
  15.  
  16. #app { 
  17.   font-family: Avenir, Helvetica, Arial, sans-serif; 
  18.   -webkit-font-smoothing: antialiased; 
  19.   -moz-osx-font-smoothing: grayscale; 
  20.   text-align: center; 
  21.   color: #2c3e50; 
  22.  

引入vuex4

vue生态中肯定少不了vuex,为了兼容vue3,vuex也推出了4.0版本。

  1. https://next.vuex.vuejs.org/ 

你可以这样安装它。

  1. npm install vuex@next --save 

你可以在src文件夹创建一个store文件夹,里面创建一个一个index.ts文件。

  1. import { createStore } from "vuex"
  2.  
  3. export default createStore({ 
  4.     state: {}, 
  5.     mutations: {}, 
  6.     actions: {}, 
  7.     modules: {} 
  8. }); 

然后,你在main.ts文件中这样引入使用它。

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

结语

我们这里只是简单地使用vite+ts+vue3搭建了一个小demo,如果你想更深层地使用它,可以关注我的动态。

 

来源:前端历劫之路内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯