(二)01 -Nuxt-基于 Vue.js 的通用应用框架 & 安装-基于node.js,服务端执行该代码
Nuxt Nuxt.js 是一个基于 Vue.js 的通用应用框架。
- 官网 :https://nuxtjs.org/
- 介绍:https://zh.nuxtjs.org/guide
- Vue 2
- Vue-Router
- Vuex (当配置了 Vuex 状态树配置项 时才会引入)
- Vue 服务器端渲染 (排除使用
mode: 'spa'
) - Vue-Meta
另外,Nuxt.js 使用 Webpack 和 vue-loader 、 babel-loader 来处理代码的自动化构建工作(如打包、代码分层、压缩等等)。
安装 步骤教程
第一步:从头开始新建项目
如果不使用 Nuxt.js 提供的 starter 模板,我们也可以从头开始新建一个 Nuxt.js 应用项目,过程非常简单,只需要 1个文件和1个目录。命令行中如下所示:
$ mkdir <项目名>然后是:
$ cd <项目名>
npm init -y第二步:新建 package.json 文件
package.json
文件用来设定如何运行 nuxt
:{
"name": "my-app",
"scripts": {
"dev": "nuxt"
}
}
上面的配置使得我们可以通过运行
npm run dev
来运行 nuxt
。第三步:安装nuxt
一旦
package.json
创建好, 可以通过以下npm命令将 nuxt
安装至项目中:$ npm install --save nuxt第四步:新建pages目录和index.vue子文件
pages/index.vue
文件Nuxt.js 会依据
pages
目录中的所有 *.vue
文件生成应用的路由配置。创建
pages
目录:$ mkdir pages创建我们的第一个页面
pages/index.vue
: 服务端执行该代码,只是不可见(基于node.js的程序-生成的server.js文件可查看服务器配置)
Hello world!
**第五步:命令行启动项目:**客户端和服务端同时编译渲染
$ npm run dev现在我们的应用运行在 http://localhost:3000 上运行,进行页面显示。
注意:Nuxt.js 会监听
pages
目录中的文件更改,因此在添加新页面时无需重新启动应用程序。了解更多关于Nuxt.js应用的目录结构: 目录结构。
← 版本记录
项目目录结构 →
示例:
package.json
文件{
"name": "nuxtdemo",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "nuxt"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^0.19.0",
"nuxt": "^2.9.2"
}
}
【(二)01 -Nuxt-基于 Vue.js 的通用应用框架 & 安装-基于node.js,服务端执行该代码】
pages/index.vue
文件
我的第一个Nuxt程序 - {{ name }}用户详情
用户test
- {{ user.name }}
>
// 此处代码会在服务端执行,也会在客户端执行
// console.log('index')import axios from 'axios'
export default {
// 异步数据
// 会在组件创建之前执行(服务端)
// 路由跳转的时候执行(客户端)
// asyncData返回的数据,会融合到组件的data里
// asyncData是在组件创建之前执行的,所以this无法获取到组件对象(this指向undefined)
// 负责:在组件创建之前获取异步数据
async asyncData () {
console.log('asyncData')
const { data } = await axios.get('https://jsonplaceholder.typicode.com/users')
return {
userList: data
}
},
data () {
return {
name: 'zs'
}
},
beforeCreate () {
console.log('----------beforeCreate--------')
},
created () {
// console.log(this)
// 判断客户端执行
if (!this.$isServer) {
console.log('----------created--------')
}
},
beforeMount () {
console.log('----------beforeMount--------')
},
mounted () {
console.log('----------mounted--------')
},
beforeUpdate () {
console.log('----------beforeUpdate--------')
},
updated () {
console.log('----------updated--------')
},
beforeDestroy () {
console.log('----------beforeDestroy--------')
},
destroyed () {
console.log('----------destroyed--------')
},
}
>
推荐阅读
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- 遇到一哭二闹三打滚的孩子,怎么办┃山伯教育
- 赢在人生六项精进二阶Day3复盘
- 2019年12月24日
- 陇上秋二|陇上秋二 罗敷媚
- 一百二十三夜,请嫁给我
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 迷失的世界(二十七)
- 我要我们在一起(二)
- 基于|基于 antd 风格的 element-table + pagination 的二次封装