Vue Ssr之旅 —— Nuxt
Nuxt 官方网站:https://nuxtjs.org/
官方脚手架工具 Create-nuxt-app: https://github.com/nuxt-community/create-nuxt-app
Nuxt 官方 Examples 教程:https://nuxtjs.org/examples
Nuxt 官方 Api 文档:https://nuxtjs.org/api
安装教程
第一步:把npm升级到最新版本,这一步是为了获得npm的最新的工具 —— npx(了解更多...)
$ npm install npm@latest -g
第二步:使用create-nuxt-app初始化项目。(由于该工具是交互型命令行,推荐使用CMD或者Powershell来执行以下命令):
$ npx create-nuxt-app chuanghui-edu-web
第三步:等待交互,选择参数

第四步:默认安装的是nuxt最新版本@1.4.2,而脚手架实际上还是使用nuxt@1.0的版本,这会导致启动异常,所以我们手动降级到nuxt@1.0版本。
$ cnpm install nuxt@1.0
第五步:启动
$ npm run dev
启动成功后,【默认首页】和【项目结构】如图所示:


FAQ
1、如何(全局 / 局部)加载插件和样式? https://nuxtjs.org/faq
2、如何自定义 webpack 配置? https://nuxtjs.org/faq/extend-webpack
3、layouts 中的页面该如何使用?
https://nuxtjs.org/guide/views#layouts
https://nuxtjs.org/api/pages-layout
https://www.youtube.com/watch?v=YOKnSTp7d38
4、如何添加 webpack-plugins 插件? https://nuxtjs.org/faq/webpack-plugins
Nuxt 相关认知
1、nuxt默认为我们提供了 autoprefixer
坑爹锦集 / 碎片知识
1、让 *.vue 中的 <style> 支持scss/sass语法
传送门:https://nuxtjs.org/faq/pre-processors
<style lang="scss" scoped>
.test {
background-color: red;
}
</style>
添加sass-loader即可:
$ cnpm install node-sass sass-loader
2、开发模式下不支持ip访问?
传送门:https://nuxtjs.org/faq/host-port
设置一下package.json即可。将config.nuxt.host设置为 0.0.0.0 然后重启就可以了。
"config": {
"nuxt": {
"host": "0.0.0.0",
"port": "3000"
}
},


3、如何编译出生产环境的代码?
$ npm run generate
然后在/dist就是我们的生产环境代码了,我加入了test.vue,所以生产的时候,多了一个 test/index.html 文件夹和文件

直接打开 index.html,可以正常看到界面。

那为什么不是 $ npm run build 呢?
根据官方的说法:https://nuxtjs.org/guide/commands
build主要是使用webpack来编译资源,并不是打包和编译静态文件的操作。所以我们ssr用户还是关心 generate 就好了。
4、如何使用和定义vuex?
Vuex 官方文档:https://vuex.vuejs.org/installation.html
Nuxt官方教程:https://nuxtjs.org/guide/vuex-store
Nuxt官方demo:https://nuxtjs.org/examples/vuex-store
Nuxt Vuex demo github 源码:https://github.com/nuxt/nuxt.js/tree/dev/examples/vuex-store
我的demo,仅仅是套路示例:/store/index.js
import Vuex from 'vuex'
import users from './users'
const createStore = () => {
// 新建 Store
return new Vuex.Store({
// false:非严格模式
strict: false,
// 状态
state: {
counter: 0
},
// 在非严格模式下,action是可以直接修改state,但不推荐这样做。所以我们约定:
// 1、 action为异步而生: 只有需要异步操作才定义和使用action,否则外部直接调用mutations来更新state即可;
// 2、 action不能操作state:在进行完异步操作之后,只能通过commit调用mutations来更新state。自己不能操作state
actions: {
nuxtServerInit ({ commit }, data) {
// 使用commit调用mutation
commit('user', data.req.session.user)
},
// 异步action示例
async nuxtServerInit({ dispatch }) {
// 继续调用其他action
await dispatch('core/load')
},
},
// 在非严格模式下,外部其实可以直接获取state,这个getters实际上是冗余的。
getters: {
AppData (state) {
return state.AppData;
}
},
// 同步更新state
mutations: {
increment (state) {
state.counter++
}
}, // 独立模块
modules: { // 建议分离出去,当模块越来越多的时候,模块的套路也是一样的格式,详情看下一个Demo
users,
}
})
}
export default createStore
在非严格模式下,action是可以直接修改state,但不推荐这样做。所以我们约定:
1、 action为异步而生: 只有需要异步操作才定义和使用action,否则外部直接调用mutations来更新state即可;
2、 action不能操作state:在进行完异步操作之后,只能通过commit调用mutations来更新state。自己不能操作state
独立模块的套路:/store/users/index.js
let state = {
AppData: {}
}
const actions = {
setAppData ({ commit, state, dispatch }, data) {
commit('setUserData', data.userInfo)
}
}
const mutations = {
setUserData (state, userInfo) {
return state.AppData = userInfo
}
},
const getters = {
AppData (state) {
return state.AppData;
}
}
export default {
state,
mutations,
actions,
getters,
}
Vue Ssr之旅 —— Nuxt的更多相关文章
- vue ssr 项目改造经历
vue ssr 项目改造经历 由于工作项目需求,需要将原有的项目改造,vue ssr 没有用到nuxt,因为vue ssr更利于seo,没办法,一个小白的改造经历, 首先说明一下,小白可以借鉴,高手也 ...
- vue SSR & asyncData & nuxt.js
vue SSR & asyncData & nuxt.js https://zh.nuxtjs.org/api/ https://www.cnblogs.com/xgqfrms/p/1 ...
- Vue SSR不可不知的问题
Vue SSR不可不知的问题 本文主要介绍Vue SSR(vue服务端渲染)的应用场景,开发中容易遇到的一些问题,提升ssr性能的方法,以及ssr的安全性问题. ssr的应用场景 1.SEO需求 SE ...
- vuejs服务端渲染更好的SEO,SSR完全指南Nuxt.js静态站生成器
vuejs服务端渲染更好的SEO,SSR完全指南Nuxt.js静态站生成器SSR 完全指南https://cn.vuejs.org/v2/guide/ssr.html在 2.3 发布后我们发布了一份完 ...
- Vue SSR常见问题、异常处理以及优化方案
本文主要介绍Vue SSR(vue服务端渲染)的应用场景,开发中容易遇到的一些问题,提升ssr性能的方法,以及ssr的安全性问题. SSR的应用场景 1.SEO需求 SEO(Search Engine ...
- 理解vue ssr原理,自己搭建简单的ssr框架
前言 大多数Vue项目要支持SSR应该是为了SEO考虑,毕竟对于WEB应用来说,搜索引擎是一个很大的流量入口.Vue SSR现在已经比较成熟了,但是如果是把一个SPA应用改造成SSR应用,成本还是有些 ...
- Vue SSR初探
因为之前用nuxt开发过应用程序,但是nuxt早就达到了开箱即用的目的,所以一直对vue ssr的具体实现存在好奇. 构建步骤 我们通过上图可以看到,vue ssr 也是离不开 webpack 的打包 ...
- Vue SSR in Action
Vue SSR in Action https://ssr.vuejs.org/ https://ssr.vuejs.org/api/ https://ssr.vuejs.org/guide/data ...
- 转载一篇好理解的vue ssr文章
转载:原文链接https://www.86886.wang/detail/5b8e6081f03d630ba8725892,谢谢作者的分享 前言 大多数Vue项目要支持SSR应该是为了SEO考虑,毕竟 ...
随机推荐
- Linux--U盘安装Ubuntu12.04[转]
http://www.cnblogs.com/plokmju/p/linux_installubuntu.html 最近一直在研究Android内核驱动开发的相关事宜,使用VMware虚拟机虽然可以更 ...
- GIT服务器实现web代码自动部署
之前在一台vps服务器上面搭建了Git服务器,用来做代码管理,方便团队开发.但是问题也就相应的来了,使用git可以轻松的上传代码,而由于做的是web开发,每次还都得到服务器上把代码手动pull或者复制 ...
- 2、redis原生的命令操作不同数据类型
一.常用数据类型简介: redis常用五种数据类型:string,hash,list,set,zset(sorted set). 1.String类型 String是最简单的类型,一个key对应一个v ...
- 错误提示:通过 Web 服务器的身份验证的用户无权打开文件系统上的文件
//win7中iis配置好了可是网页打不开,为什么.? //错误提示:通过 Web 服务器的身份验证的用户无权打开文件系统上的文件 //解决办法1.右键单击你的网站根目录文件夹,如wwwroot文件夹 ...
- Memcacher win7 安装测试
1.下载memcache 的windows 稳定版,解压放某个盘下面,比如在H:/wamp/www/php api/memcache: 2.在终端(即cmd 命令界面)下,输入安装命令 :H:/wam ...
- Linux 防火墙Iptables
1.规则链INPUT——进来的数据包应用此规则链中的策略OUTPUT——外出的数据包应用此规则链中的策略FORWARD——转发数据包时应用此规则链中的策略PREROUTING——对数据包作路由选择前应 ...
- CPP复习笔记 3
--------------- CPP函数编译原理和成员函数的实现 从上节的分析中能够看出.对象的内存中仅仅保留了成员变量,除此之外没有不论什么其它信息,程序运行时不知道 stu 的类型为 Stude ...
- Linux十大常用命令
No 命令 功能 实例 解释 mkdir 创建目录 mkdir newdirmkdir dir/subdirmkdir -p newdir/subdir -p: 可以是一个路径名称.此时若路径中的某些 ...
- JavaScript callback function 回调函数的理解
来源于:http://mao.li/javascript/javascript-callback-function/ 看到segmentfault上的这个问题 JavaScript 回调函数怎么理解, ...
- xml中“ < > ”转义为“ < > ”问题处理
曾经也碰到过类似问题,解决方法是在发送或者解析报文前执行上面的方法将内容转义一下,现在我用dom4j组装如下的报文(报文体中内容传输时加密处理),大致介绍一下上面方法的使用,具体看代码. import ...