热门关键字:
jquery > jquery教程 > html5 > Nuxt项目搭建到发布部署

Nuxt项目搭建到发布部署

334
作者:管理员
发布时间:2020/3/17 11:01:18
评论数:0
转载请自觉注明原文:http://www.jq-school.com/Show.aspx?id=1052

  一、项目目录结构:

  方式1、直接利用官方提供好的脚手架工具进行搭建:npxcreate-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:命令:npminstall--save-devnode-sasssass-loader

  步骤2:在根目录的配置文件nuxt.config.js中进行引入你需要添加的全局样式表,如:

  注:如果你需要在.vue文件内进行使用,需要在style标签中添加lang="scss"如:

  三、发起请求时需要使用axios时,假如你没有安装过相关的依赖,那么:

  方式1:命令:npminstall--save-devaxios

  然后在哪个页面有需要时直接引用importaxiosfrom'axios'

  方式2:命令:npminstall--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、想要生效看到效果是吧?请重新启动服务,命令:npmrundev

  四、动态路由

  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)、先进行代码构建打包,命令:npmrunbuild

  注:

  1)、生成的包将会在.nuxt这个目录下

  2)、因.nuxt这个目录在mac下是隐藏着的,所以(非Mac时可以忽略以下几点)

  3)、需要显示用命令:defaultswritecom.apple.finderAppleShowAllFiles-booltrue

  4)、当执行了以上显示的后,接下来还需要操作重启下“访达”,点击后弹出的框进行退出"访达"(会自己重启)

  5)、这下就可以看到隐藏的文件了,

  6)、需要对文件可以再隐藏时,执行defaultswritecom.apple.finderAppleShowAllFiles-boolfalse,再执行下第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-envNODE_ENV=productionnodeserver/index.js",时需要把它更改为:"start":"nuxtstart"。

  3、那么,现在把所需要的代码都准备好了后,那么接下来,把相关目录文件上传到你的域名所指向的根目录。

  4、接下来得修改下服务端的配置文件,添加路径转发(proxy_pass)处理,因默认在本地运行时,都是访问http://localhost:3000,我用的是nginx.配置如:

  server{

  listen80;

  server_namedemo.htmlx.club;

  location/{

  proxy_passhttp://localhost:3010;

  indexindex.htmlindex.htm;

  }

  }

  注:配置完后需要对nginx进行重启,比如我的cd/usr/local/nginx/sbin到达sbin下判断是否配置正确:./nginx-t,提示成功后就进行执行重启操作:./nginx-sreload

  5、最后,切换到域名所指向的根目录下,先可以npmi(安装项目所需要的所有依赖).

  6、好了,感觉快好了,运行npmrunstart跑起来吧。

  7、如果没有意外,运行了npmrunstart后再访问下你指定的域名,那是可以看到效果的了(右键查看源文件,可以看到渲染出数据了).

  8、那么当你把刚才执行运行npmrunstart的命令框关闭时,再看下你的域名是还能正常访问?估计是挂了吧?没事,我们有的是解决办法,请继续往下走。。。

  六、安装pm2

  1、全局安装命令npmipm2-g

  2、安装完pm2后,那么就直接跑咯,命令:pm2startnpm--runstart(执行了这命令后就不用单独执行npmrunstart了哦),这里域名理论是能正常访问了,接下来,这服务就会一直在跑了,除非:你执行了pm2stop(后面可以接相关参数的)停止了它。

  3、当然了当你想查看下pm2所守护的进程有什么的话你可以用pm2list,又或者你想重新发布了项目后需要再重启一把,那你可以用pm2restart

  注:如果同一个服务器需要起多个pm2进程的话,可以以设置环境变量的形式。如:PM2_HOME=“xxx”pm2start........https://pm2.keymetrics.io/docs/usage/specifics/

  七、静态应用部署

  1、当你的站是比较简单的,对SEO也有些少要求的,那么我建议你用静态应用部署。

  2、这部署比较简单明了,就官网所说的npmrungenerate,把生成的dist目录下的文件一把丢到服务器所指定域名的根目录下即可,啥事都没了。。






如果您觉得本文的内容对您的学习有所帮助:支付鼓励



关键字:html
友荐云推荐