使用mpvue+typescript搭建前端小程序项目

使用mpvue+typescript搭建前端小程序项目

项目搭建

mpvue官网五分钟教程:http://mpvue.com/mpvue/

创建项目命令:
全局安装 vue-cli
$ npm install --global vue-cli
创建一个基于 mpvue-quickstart 模板的新项目
$ vue init mpvue/mpvue-quickstart my-project
默认安装即可
$ cd my-project
$ npm install

#启动构建
$ npm run dev

启动并预览项目

预览项目是否搭建成功。打开微信开发工具,导入项目,选择刚刚搭建的项目文件夹,选择 dist/wx,确认,就能看到效果啦(注释:这里就不贴图了,搭建项目后,没用的文件删的太快了,啊哈哈!)

配置typescript

1 安装依赖项

安装 vue 与装饰器,mpvue-loader目前支持用TypeScript来写,功能还在完善中(WIP)。需要搭 配vue-property-decorator来使用。
$ npm install --save vue vue-property-decorator
安装 typescript
$ npm install --save typescript@3.9.6
安装 typescript 所需loader(注意存在版本兼容问题,需下载指定版本ts-loader与awesome-typescript-loader最新版目前不兼容webpack4以下版本)
$ npm install --save ts-loader@3.1.1 awesome-typescript-loader@4.0.1
安装声明文件@types/node @types/weixin-app
$ npm install --save @types/node @types/weixin-app
安装vue-class-component
$ npm install --save vue-class-component
(注意:在安装依赖项时,如果提升warn,可以详细阅读一下,注意出现 You must install peer dependcies yourself时,必须自己安装,根据提示的需要,进行对应安装就好了,问题不大!)

2.安装官方微信小程序定义文件

安装官方微信小程序定义文件:https://github.com/wechat-miniprogram/api-typings#%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%AE%9A%E4%B9%89%E6%96%87%E4%BB%B6

此为微信小程序 API 的 TypeScript 类型定义文件,请时刻关注官方最新版本

$ npm install miniprogram-api-typings

3.让TypeScript识别Vue文件

在src目录下,新建一个vue-shim.d.ts文件,写入下面的代码,让TypeScript识能别Vue文件
declare module “*.vue”{
import Vue from ‘vue’
export default Vue;
}

4.配置webpack 3.x

  • 在build文件下找到webpack.base.conf.js文件(这是项目打包的配置文件)

    在这里插入图片描述
    在extensions中加入ts文件格式

  • 在module中的rules中加入ts的loader
    在这里插入图片描述代码:

    {
            test: /\.tsx?$/, 
            exclude: /node_modules/,
            use: [
              'babel-loader',
              {
                loader: 'mpvue-loader',
                options:Object.assign({checkMPEntry: true}, vueLoaderConfig)//与同级的js中对应项值一致
              },
              {
                // loader: 'ts-loader',
                loader: 'awesome-typescript-loader',
                options: {
                  // errorsAsWarnings: true,
                  useCache: true,
                }
              }
            ]
    },
    

5.**增加typescript配置 **
在项目的根目录下,新建一个tsconfig.json文件,写入typoescript配置(也可以参照官网:https://www.tslang.cn/docs/handbook/tsconfig-json.html)

  {
  "compilerOptions": {
    // 与 Vue 的浏览器支持保持一致
    "target": "es2015",
    // 这可以对 `this` 上的数据属性进行更严格的推断
    "strict": true,
    // 如果使用 webpack 2+ 或 rollup,可以利用 tree-shake:
    "module": "es2015",
    "moduleResolution": "node",
    "baseUrl": "./",
    "outDir": "./dist/",
    "paths": {
      "vue": [
        "node_modules/mpvue"
      ],
      "@/*": [
        "src/*"
      ]
    },
    "types": [
      "@types/weixin-app",//声明文件
      "@types/node"
    ],
    "allowJs": true,
    "allowSyntheticDefaultImports": true,
    "noImplicitAny": false,
    "skipLibCheck": true,
    "strictPropertyInitialization": false,
    "experimentalDecorators": true
    },
  "include": [
    "./src/**/*"
    ],
  "exclude": [
    "node_modules"
    ],
  "typeAcquisition": {
    "enable": true
    }
  }

6.将webpack.base.config.js文件中的入口文件名后缀改成.ts

function getEntry (rootSrc) {
  var map = {};
  glob.sync(rootSrc + '/pages/**/main.ts')
  .forEach(file => {
    var key = relative(rootSrc, file).replace('.ts', '');
    map[key] = file;
  })
   return map;
}

const appEntry = { app: resolve('./src/main.ts') }
const pagesEntry = getEntry(resolve('./src'), 'pages/**/main.ts')
const entry = Object.assign({}, appEntry, pagesEntry)

7.将 src/main.js 文件修改为 main.ts ,并添加代码

  // main.ts
  import { Component, Emit, Inject, Model, Prop, Provide, Vue, Watch } from 'vue-property-decorator';
  import { VueConstructor } from "vue";
  interface IMpVue extends VueConstructor {
    mpType: string
  }
  // 添加小程序hooks http://mpvue.com/mpvue/#_4
  Component.registerHooks([
  // app
    'onLaunch', // 初始化
    'onShow', // 当小程序启动,或从后台进入前台显示
    'onHide', // 当小程序从前台进入后台
  // pages
    'onLoad', // 监听页面加载
    'onShow', // 监听页面显示
    'onReady', // 监听页面初次渲染完成
    'onHide', // 监听页面隐藏
    'onUnload', // 监听页面卸载
    'onPullDownRefresh', // 监听用户下拉动作
    'onReachBottom', // 页面上拉触底事件的处理函数
    'onShareAppMessage', // 用户点击右上角分享
    'onPageScroll', // 页面滚动
    'onTabItemTap', //当前是 tab 页时, 点击 tab 时触发 (mpvue 0.0.16 支持)
  ])
  Vue.config.productionTip = false
  // 在这个地方引入是为了registerHooks先执行
  const MyApp = require('./App.vue').default as IMpVue
  const app = new Vue(MyApp)
  app.$mount()

8.App.vue中引入main.ts文件

//app.vue中 mpvue-loader目前支持用TypeScript来写,功能还在完善中(WIP)。目前实现了用<script lang="ts" src="./xx.ts"></script>这种方式的自动识别
<script lang='ts' src="./app.ts"></script>
<style></style>

重新打包npm run build
npm start 启动项目,编译通过,配置完成,下面接着说说typescript如何在mpvue中写法。
目录结构:
在这里插入图片描述

index.vue文件

<template>
	<div>我的名字:{{userinfo.name}}</div>
	<div>我的年龄:{{userinfo.age}}</div>
	<div>我的性别:{{userinfo.gender==0?'男':'女'}}</div>
	<div>我的爱好:{{userinfo.like}}</div>
</template>
//当前文件下的index.ts文件
<script lang='ts' src='./index.ts'></script>

.index.ts文件

import { Vue, Component } from 'vue-property-decorator'
@Component({
    name:'userinfo'
})
class Userinfo extends Vue{
	userinfo: object = {
		name: string = '张三',
		age: number = 20,
		gender: number = 0,
		like: string = '在下性别男,爱好女!'
	}
}
export default Userinfo

.main.ts文件

import Vue from 'vue'
import Index from './index.vue'

const index = new Vue(Index)

index.$mount()

.main.json文件

{
    "navigationBarTitleText": "个人信息",
}

大功告成,希望给大家带来帮助,啦啦啦,点个赞咯!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Vue3 + TypeScript 是一种常用的前端开发技术组合,它结合了Vue框架的便捷性和TypeScript的类型检查能力,可以提高项目的可维护性和开发效率。下面是一些Vue3 + TypeScript项目经验的介绍: 1. 项目初始化:使用Vue CLI创建一个Vue3项目,并选择TypeScript作为项目的语言。这样可以自动生成一些基本的配置和文件结构,方便快速开始开发。 2. 类型定义:在Vue3 + TypeScript项目中,可以使用TypeScript的类型系统来定义组件的props、data、computed等属性的类型,以及事件的参数类型等。这样可以在编码过程中及早发现潜在的类型错误,提高代码的健壮性。 3. 组件开发:在Vue3 + TypeScript项目中,可以使用装饰器(decorators)来定义组件选项,例如使用@Prop来定义props属性的类型,使用@Emit来定义事件的参数类型。这样可以更清晰地描述组件的接口和行为。 4. 路由管理:在Vue3 + TypeScript项目中,可以使用Vue Router进行路由管理。通过定义路由的类型和参数类型,可以在编码过程中获得更好的类型提示和错误检查。 5. 状态管理:在Vue3 + TypeScript项目中,可以使用Vuex进行状态管理。通过定义状态的类型和操作的参数类型,可以提高代码的可读性和可维护性。 6. 第三方库的使用:在Vue3 + TypeScript项目中,可以使用第三方库,并为其编写类型声明文件,以获得更好的类型检查和代码提示。例如,可以使用axios发送HTTP请求,并为其编写类型声明文件,以确保请求参数和响应数据的类型正确。 7. 单元测试:在Vue3 + TypeScript项目中,可以使用Jest等测试框架进行单元测试。通过编写类型安全的测试用例,可以提高代码的质量和可靠性。 8. 构建和部署:在Vue3 + TypeScript项目中,可以使用Webpack等构建工具进行项目的打包和优化。通过配置合适的TypeScript编译选项和Webpack插件,可以生成高效的生产环境代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值