Nuxt项目搭建到发布部署
一、项目目录结构:
方式1、直接利用官方提供好的脚手架工具进行搭建:npx create-nuxt-app <项目名>
目录会是这样(具体目录都放些什么,请看官方文档,详细):
方式2、手工慢慢来,请看官方文档:https://zh.nuxtjs.org/guide/installation#%E4%BB%8E%E5%A4%B4%E5%BC%80%E5%A7%8B%E6%96%B0%E5%BB%BA%E9%A1%B9%E7%9B%AE
二、为项目添加sass样式表:
步骤1:命令:npm install --save-dev node-sass sass-loader
步骤2:在根目录的配置文件nuxt.config.js中进行引入你需要添加的全局样式表,如:
注:如果你需要在.vue文件内进行使用,需要在style标签中添加 lang="scss" 如:
三、发起请求时需要使用 axios时,假如你没有安装过相关的依赖,那么:
方式1:命令:npm install --save-dev axios
然后在哪个页面有需要时直接引用 import axios from 'axios'
方式2:命令:npm install --save-dev @nuxtjs/axios
(1)、进行全局配置,在nuxt.config.js中添加模块 '@nuxtjs/axios' 如:
(2)、简单使用如(具体可以参照站点:https://zh.nuxtjs.org/guide/async-data):
注:假如你想需要在一个地方进行统一设置接口请求的API,需要通过注册拦截器和更改全局配置的话,你还可以这样:
(可以参考文档:https://axios.nuxtjs.org/)
1、你需要先在 plugins 目录下添加一个文件 axios.js,如:
2、引用使用,在nuxt.config.js中的plugins添加 '@/plugins/axios.js',如:
3、想要生效看到效果是吧?请重新启动服务,命令:npm run dev
四、动态路由
1、假如你希望你的站点链接对SEO更加友好点(请求详情的id不以问号的展示形式来连接),比如由 http........./product/details?id=xxxx 变为 http........./product/xxxx。那么,你可以这样玩:
(1)、目录结构如(注意是 _id.vue):
Nuxt.js会把目录生成的路由表,如:
{ name: 'product-id', path: '/product/:id?', component: 'pages/product/_id.vue' }
当然,如果你觉得这样的表述不够清晰,请稳步这里:https://zh.nuxtjs.org/guide/routing#%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1
(2)、目录结构好了,那么在实际的页面跳转中,该怎样把id传过去呢?path还好理解,特别是当你用到name(推荐方式)进行处理时,请看以下写法:
1)、方式1 (path): <nuxt-link :to="'/product/' + 这里传入你的id">点击进入详情</nuxt-link>,
比如item对象里有个id:<nuxt-link :to="'/product/' + item.id">点击进入详情</nuxt-link>
2)、方式2 (name): <nuxt-link :to="{name: 'product-id', params: {id: 这里传入你的id}}">点击进入详情</nuxt-link>,
同上,比如item对象里有个id:<nuxt-link :to="{name: 'product-id', params: {id: item.id}}">点击进入详情</nuxt-link>
注:特别的,方式2时,传递id时请用params,要不然它自动识别不到。当然,如果你还有其它的参数要传的话,可以在params下的对象里书写,当然也可以再多跟一个query的字段来把参数带过去,如:
<nuxt-link :to="{name: 'product-id', params: {id: item.id}, query: {xxx: xxxx}}">点击进入详情</nuxt-link>
五、服务端渲染应用部署
1、需要发布的文件准备
(1)、先进行代码构建打包,命令:npm run build
注:
1)、生成的包将会在 .nuxt 这个目录下
2)、因.nuxt这个目录在mac下是隐藏着的,所以(非Mac时可以忽略以下几点)
3)、需要显示用命令:defaults write com.apple.finder AppleShowAllFiles -bool true
4)、当执行了以上显示的后,接下来还需要操作重启下“访达”, 点击后弹出的框 进行退出"访达"(会自己重启)
5)、这下就可以看到隐藏的文件了,
6)、需要对文件可以再隐藏时,执行defaults write com.apple.finder AppleShowAllFiles -bool false , 再执行下第4步即可 (命令在显示的区别就是后面的 true 与 false)
2、需要放置到服务器上的代码只需要4个目录:.nuxt、static、nuxt.config.js、package.json以下图:
注:目录1(.nuxt)、这是打包构建好的所有依赖文件及源文件等等
目录2(static)、就是静态资源包,因为上面打包构建时,不会被打进去的,所以得带上它
目录3(nuxt.config.js)、一些配置文件,得带上。
目录4(package.json)、这就比较重要了,当"start": "cross-env NODE_ENV=production node server/index.js",时需要把它更改为:"start": "nuxt start" 。
3、那么,现在把所需要的代码都准备好了后,那么接下来,把相关目录文件上传到你的域名所指向的根目录。
4、接下来得修改下服务端的配置文件,添加路径转发(proxy_pass)处理,因默认在本地运行时,都是访问 http://localhost:3000 ,我用的是nginx.配置如:
server {
listen 80;
server_name demo.htmlx.club;
location / {
proxy_pass http://localhost:3010;
index index.html index.htm;
}
}
注:配置完后需要对nginx进行重启,比如我的 cd /usr/local/nginx/sbin 到达sbin 下 判断是否配置正确: ./nginx -t , 提示成功后就进行执行重启操作:./nginx -s reload
5、最后,切换到域名所指向的根目录下,先可以npm i (安装项目所需要的所有依赖).
6、好了,感觉快好了,运行 npm run start 跑起来吧。
7、如果没有意外,运行了npm run start 后 再访问下你指定的域名,那是可以看到效果的了(右键查看源文件,可以看到渲染出数据了).
8、那么当你把刚才执行运行 npm run start 的命令框关闭时,再看下你的域名是还能正常访问?估计是挂了吧?没事,我们有的是解决办法,请继续往下走。。。
六、安装pm2
1、全局安装命令 npm i pm2 -g
2、安装完pm2后,那么就直接跑咯,命令:pm2 start npm -- run start (执行了这命令后就不用单独执行npm run start了哦),这里域名理论是能正常访问了,接下来,这服务就会一直在跑了,除非:你执行了pm2 stop (后面可以接相关参数的)停止了它。
3、当然了当你想查看下pm2所守护的进程有什么的话你可以用 pm2 list , 又或者你想重新发布了项目后需要再重启一把,那你可以用 pm2 restart
注:如果同一个服务器需要起多个pm2进程的话,可以以设置环境变量的形式。如:PM2_HOME=“xxx” pm2 start ........ https://pm2.keymetrics.io/docs/usage/specifics/
七、静态应用部署
1、当你的站是比较简单的,对SEO也有些少要求的,那么我建议你用静态应用部署。
2、这部署比较简单明了,就官网所说的 npm run generate,把生成的dist目录下的文件一把丢到服务器所指定域名的根目录下即可,啥事都没了。。
好咯,就这么多先,有想法的可以一起评论来研究下哦~
Nuxt项目搭建到发布部署的更多相关文章
- ASP.NET网站怎么发布 Web项目程序怎么发布部署(暂时收藏)
Web程序如何发布部署呢.网站项目做好了,需要发布出来,提交给客户,装上服务器.那怎么在ASP.NET开发环境中将网站程序发布出来呢 ^_^ 工具/原料 Visual Studio 2010 ( ...
- docker封装nuxt项目使用jenkins发布
一.概述 vue项目可以打一个dist静态资源包,直接使用Nginx发布即可. 但是nuxt项目无法像vue那样,可以打一个dist静态资源包. 需要安装Node.js,并使用npm install ...
- 【朝夕Net社区技术专刊】Core3.1 WebApi集群实战专题---WebApi环境搭建运行发布部署篇
欢迎大家阅读<朝夕Net社区技术专刊>第1期 原文是我在知乎发表的,现在在这里分享! 我们致力于.NetCore的推广和落地,为更好的帮助大家学习,方便分享干货,特创此刊!很高兴你能成为首 ...
- 从壹开始 [ Nuxt.js ] 之二 || 项目搭建 与 接口API
前言 哈喽大家周一好,今天的内容比较多,主要就是包括:把前端页面的展示页给搭出来,然后调通接口API,可以添加数据,这两天我也一直在开发,本来想一篇一篇的写,发现可能会比较简单,就索性把项目搭建的过程 ...
- nodejs使用vue从搭建项目到发布部署
都说是使用vue 脚手架自然用的是vue-cli npm install vue-cli -g 建立项目 vue init webpack demo //vue初始化 使用webpack 项目名称 这 ...
- 在windows环境下部署nuxt项目(线上发布部署)
因为公司项目需要兼容SEO,同时我们也一直希望能够真正的实现前后端分离,于是毫不犹豫的选择了nuxt. 话说要重构前后端分离真是一个大工程,由于各种原因我们团队花了近两年时间都没有完成,最近才又重启把 ...
- Maven项目搭建(三):Maven直接部署项目
上一章给大家讲解了如何使用Maven搭建SSM框架项目. 这次给大家介绍一下怎么使用Maven直接部署项目. Maven直接部署项目 1.新建系统变量CATALINA_HOME,值为:Tom ...
- nuxt项目服务端渲染应用部署、使用pm2守护进程及遇到的问题处理
服务端渲染应用部署应该先编译构建,然后再启动 Nuxt 服务,可通过以下两个命令来完成: nuxt build nuxt start 我们已经在pakage.json里配置好script命令 { &q ...
- NET5实践:项目创建-结构概述-程序运行-发布部署
ASP.NET5实践01:项目创建-结构概述-程序运行-发布部署 1.项目创建 ASP.NET5项目模板有三种: 新建项目: 选择模板: 2.结构概述 References对应配置是project ...
随机推荐
- 码云因为认证失败导致推送失败 生成 SSH 密钥对
- Selenium XPath
目录 1.selenium是什么呢? 安装 设置浏览器引擎 2.基本使用 3.等待元素被加载 4.选择器 2. find_element_by_tag_name 3. find_element_by_ ...
- 图的遍历 | 1034 map处理输入数据,连通块判断
这题写得比较痛苦.首先有点不在状态,其次题目比较难读懂. “Gang”成立的两个条件:①成员数大于两个 ②边权总和大于阈值K 首先,在录数据的时候通过map或者字符串哈希建立string到int的映 ...
- UA记录
安卓QQ内置浏览器UA: Mozilla/5.0 (Linux; Android 5.0; SM-N9100 Build/LRX21V) AppleWebKit/537.36 (KHTML, like ...
- 获取最新的中国IP的脚本,给ROS可以使用的脚本
wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latestecho "/ip firewall address-li ...
- pip: failed to create process.解决方法
昨天在使用pip过程,pip提示:failed to create process. 解决方法:python -m pip install xxx 就可以了 如以matplotlib为例即:pytho ...
- C# ini配置文件操作类
/// <summary> /// INI文件操作类 /// </summary> public class IniFileHelper { /// <summary&g ...
- 【操作系统之十二】分支预测、CPU亲和性(affinity)
一.分支预测 当包含流水线技术的处理器处理分支指令时就会遇到一个问题,根据判定条件的真/假的不同,有可能会产生转跳,而这会打断流水线中指令的处理,因为处理器无法确定该指令的下一条指令,直到分支执行完毕 ...
- 【转帖】Linux文件夹对比并提取的差分文件技巧-rsync的妙用
Linux文件夹对比并提取的差分文件技巧-rsync的妙用 [日期:2016-02-13] 来源:oschina.net 作者:mengshuai [字体:大 中 小] https://www.li ...
- ElasticSearch中的JVM性能调优
ElasticSearch中的JVM性能调优 前一段时间被人问了个问题:在使用ES的过程中有没有做过什么JVM调优措施? 在我搭建ES集群过程中,参照important-settings官方文档来的, ...