开场白
开始使用
API
- API: The <client-only> Component
- API: <nuxt-child> 组件
- API: <nuxt-link> 组件
- API: <nuxt> 组件
- API: 构建配置
- API: buildDir 属性
- API: 缓存配置
- API: CSS 配置
- API: dev 属性配置
- API: dir 属性
- API: 环境变量配置
- API: generate 属性配置
- API: globalName 属性
- API: head 属性配置
- API: The hooks Property
- API: ignore 属性
- API: The loading indicator Property
- API: loading 属性配置
- API: The mode Property
- API: modern 属性
- API: modules 属性
- API: modulesDir 属性
- API: performance 属性
- API: plugins 属性配置
- API: The render Property
- API: rootDir 属性配置
- API: router 属性配置
- API: server 属性
- API: serverMiddleware 属性
- API: srcDir 属性配置
- API: transition 属性配置
- API: vue.config 属性
- API: watch 属性
- API: watchers 属性
- API: 上下文对象
- API: asyncData 方法
- API: The Builder Class
- API: The Generator Class
- API: The ModuleContainer Class
- API: The Nuxt Class
- API: The Renderer Class
- API: Nuxt Modules Intro
- API: nuxt.renderAndGetWindow(url, options)
- API: nuxt.renderRoute(route, context)
- API: nuxt.render(req, res)
- API: Nuxt(options)
- API: fetch 方法
- API: head 方法
- API: key 属性
- API: layout 属性
- API: loading 属性
- API: middleware 属性
- API: scrollToTop 属性
- API: transition 属性
- API: validate 方法
- API: The watchQuery Property
配置
- 外部资源
- 预处理器
- JSX
- Postcss 插件
- 如何扩展 Webpack 的配置
- Webpack 插件
- Caching Components
- 如何更改应用的主机和端口配置?
- 如何集成 Google 统计分析服务?
- 如何发起跨域资源请求?
- How to extend Webpack to load audio files?
部署
- 如何使用 Now.sh 进行部署?
- 使用 Surge.sh 部署
- 在 Google App Engine 上部署
- Netlify 部署
- AWS: S3+Cloudfront 部署
- Dokku 部署
- nginx 代理
- 如何部署至 GitHub Pages?
- 部署至 Heroku
其他
支持 TypeScript
静态类型系统有助于防止许多潜在的运行时错误,尤其是在应用程序不断增长时。
这就是为什么Nuxt的全新
nuxt-ts
软件包提供了内置的 TypeScript 工具支持:
- Nuxt官方类型声明
- IDE 中的自动补全功能
- 以TypeScript方式编写所有内容 (
layouts
,pages
,components
,plugins
,store
)- 支持TS编译 (
nuxt.config.ts
,modules
,serverMiddlewares
)- 支持TSX
快速开始
为了能够在项目中使用TypeScript,您需要将@nuxt/typescript
和ts-node
作为开发依赖项安装:
npm i -D @nuxt/typescript
npm i ts-node
# OR
yarn add -D @nuxt/typescript
yarn add ts-node
@nuxt/typescript
提供了在单独的进程来编译TypeScript文件和检查类型所需的typescript相关依赖项。
ts-node
扩展了Nuxt核心,为nuxt.config.ts
和serverMiddlewares
开启了运行时TypeScript支持。
您还需要通过代码编辑器或命令行在根项目文件夹中创建一个空的tsconfig.json
文件:
touch tsconfig.json
提示: tsconfig.json
文件将在您第一次运行nuxt
命令时使用默认值自动更新。
从 JavaScript 到 TypeScript
配置文件
为了能够在配置文件中使用TypeScript,您只需要将nuxt.config.js
重命名为nuxt.config.ts
。
Nuxt.js还带有提供自动补全和类型检查的类型定义:
import NuxtConfiguration from '@nuxt/config'
const config: NuxtConfiguration = {
// Type or Press `Ctrl + Space` for autocompletion
}
export default config
组件
在组件中,我们强烈建议使用依赖于vue-class-component的vue-property-decorator。
以下是可复用组件用来显示使用Nuxt中 asyncData
获取的数据展示在页面中的基本示例。
/* models/Post.ts */
export default interface Post {
id: number
title: string
description: string
}
<!-- components/PostPreview.vue -->
<template>
<div>
<h2>{{ post.title }}</h2>
<p>{{ post.description }}</p>
</div>
</template>
<script lang="ts">
import { Component, Vue, Prop } from 'vue-property-decorator'
import Post from '~/models/Post'
@Component
export default class PostPreview extends Vue {
@Prop({ type: Object, required: true }) post!: Post
}
</script>
<!-- pages/feed.vue -->
<template>
<div>
<PostPreview v-for="post in posts" :key="post.id" :post="post" />
</div>
</template>
<script lang="ts">
import axios from 'axios'
import { Component, Vue } from 'vue-property-decorator'
import Post from '~/models/Post'
@Component({
components: {
PostPreview: () => import('~/components/PostPreview.vue')
},
async asyncData () {
let { data } = await axios.get(`https://my-api/posts`)
return {
posts: data
}
}
})
export default class FeedPage extends Vue {
posts: Post[] = []
}
</script>
您可以对布局组件(layouts
)使用完全相同的逻辑。
使用ESLint
If you're using ESLint to lint your project, here is how you can make ESLint lint your TypeScript files. 如果您正在使用ESLint来对项目进行代码规范检查,那么您可以使用以下方法将ESLint添加进来:
重点: 我们假设您已经在项目中设置了nuxt/eslint-config。
首先,您需要安装typescript-eslint插件:
npm install -D @typescript-eslint/eslint-plugin
# OR
yarn add -D @typescript-eslint/eslint-plugin
然后,通过添加@typescript-eslint
插件并使@typescript-eslint/parser
作为默认解析器来编辑ESLint配置(.eslintrc.js
)。
最轻量化配置应如下所示:
module.exports = {
plugins: ['@typescript-eslint'],
parserOptions: {
parser: '@typescript-eslint/parser'
},
extends: [
'@nuxtjs'
],
rules: {
'@typescript-eslint/no-unused-vars': 'error'
}
}
最后,添加或编辑package.json
的lint
脚本:
"lint": "eslint --ext .ts,.js,.vue --ignore-path .gitignore ."
--ignore-path
option is useful to prevent ESLint linting files/folders likenode_modules
,.nuxt
or whatever you don't want it to lint.
--ignore-path选项对于忽略某些不想被检查的文件或文件夹(例如node_modules
,.nuxt
或任何您不希望它被检查的文件或者文件夹)非常有用。
您现在可以通过运行npm run lint
(或者 yarn lint
)来检查您的TypeScript文件的代码风格错误或其他不规范。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论