Nuxt学习(vue项目移植)

目录

1.简单创建Nuxt项目 

2.vue迁移nuxt

3.nuxt学习

4.配置nuxt在linux中的运行环境 

        4.1node

        4.2nginx

5.部署在linux服务器

6.ssr渲染,利于seo


自己的网站随着时间,已经上了百度排名

南京市江宁区金瑞祥贴金工艺厂

关键词:贴金箔

jrxtiejin.com

jinruixiang.top

1.简单创建Nuxt项目 

首先配置全局nuxt脚手架

npm install -g create-nuxt-app

在你想要的目录下创建nuxt项目 

npx create-nuxt-app seo

我选择的如下

这是一个插件,类型于message(element-ui),安装如下

npm install @nuxtjs/toast

然后在config配置

  plugins: [
    { src: "~/plugins/ElementUI", ssr: true },
    { src: '~/plugins/main', ssr: true },
    { src: "@plugins/vue-quill-editor", ssr: false },

  ],

2.vue迁移nuxt

具体细节不说了,我就是参考如下链接,有效

vue-cli3整体迁移至服务端渲染nuxtjs

vue项目改造nuxt 利于seo - BlancheWang - 博客园

vue-cli3整体迁移至服务端渲染nuxtjs - 古兰精 - 博客园

我选择的是把根目录变成src那个方案

附上我的nuxt.config.js和目录结构参考

export default {
  server:{
    port:3000,
    host:'0.0.0.0'
  },
  srcDir: 'src/',
  mode: 'universal',
  // Global page headers: https://go.nuxtjs.dev/config-head
  head: {
    title: '金瑞祥贴金首页-专业贴金箔-贴金箔价格-大理石刻字[不满意不收费]',
    htmlAttrs: {
      lang: 'en'
    },
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: '「经营范围~地道」:【贴金装潢】|【佛像贴金】|【大理石贴金】|【大理石刻字】|【庙宇装潢】|【酒店贴金】|【金字招牌】|【网站工程】 「十年老厂」 「联系电话」:13951638402"' },
      {hid:'keywords',name:'keywords',content:'贴金箔,刻字,佛像贴金,公司门牌,贴金工艺'},
      { name: 'format-detection', content: 'telephone=no' }
    ],
    link: [
      { rel: 'icon', type: 'image/x-icon', href: '~/static/favicon.ico' }
    ]
  },

  // Global CSS: https://go.nuxtjs.dev/config-css
  css: [
    "element-ui/lib/theme-chalk/index.css",
    "~/assets/css/global.css",
    '~/assets/font/iconfont.css',
    'quill/dist/quill.snow.css',
    'quill/dist/quill.bubble.css',
    'quill/dist/quill.core.css'
  ],

  // Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
  plugins: [
    { src: "~/plugins/ElementUI", ssr: true },
    { src: '~/plugins/main', ssr: true },
    { src: "@plugins/vue-quill-editor", ssr: false },
  ],

  // Auto import components: https://go.nuxtjs.dev/config-components
  components: true,

  // Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
  buildModules: [
  ],

  // Modules: https://go.nuxtjs.dev/config-modules
  modules: [
    '@nuxtjs/toast',
    '@nuxtjs/axios',
    '@nuxtjs/router'
  ],
  toast: {
    position: 'top-center',
    duration: 2000
  },
  axios: {
    proxy: true, //开启代理
    credentials: true, //跨域请求需使用凭证
  },
  proxy: [
    ['/api', {
      target: 'http://127.0.0.1:9000', // (后端请求地址)
      changeOrigin: true,
      pathRewrite: { '^/api': '' }
    }]
  ],
  // Build Configuration: https://go.nuxtjs.dev/config-build
  build: {
  }
}

对应目录结构如下

3.nuxt学习

推荐链接,觉得不错,不是每个知识点都测过

值得注意一点就是:created里面调用this.$content.xxxx.xxx(定义的类似于常量的)

如果那个main.js文件没有被ssr:true那么,就无法获取this.$content.xxxx.xxx

  plugins: [
    { src: "~/plugins/ElementUI", ssr: true },
    { src: '~/plugins/main', ssr: true },
    { src: "@plugins/vue-quill-editor", ssr: false },
  ],

nuxt搭建高能SEO商城(一) - 知乎

上面这个值得注意一点就是asyncData用法

https://www.jb51.net/article/166900.htm

上面的知识点不少 

4.配置nuxt在linux中的运行环境 

4.1node

在linux中下载node,跟着步骤不会报错的,路径都可以成功

wget https://npm.taobao.org/mirrors/node/v14.15.4/node-v14.15.4-linux-x64.tar.xz

解压 

xz -d node-v14.15.4-linux-x64.tar.xz
tar -xvf node-v14.15.4-linux-x64.tar

软链接 

ln -s /usr/local/node-v14.15.4-linux-x64/bin/node /usr/local/bin/node
ln -s /usr/local/node-v14.15.4-linux-x64/bin/npm /usr/local/bin/npm
node -v

pm2安装

ln -sf /usr/local/node-v14.15.4-linux-x64/bin/pm2 /usr/local/bin/pm2
pm2 list

 简单操作

查看当前守护进程 :pm2 list
停止所有的应用程序:pm2 stop all
停止某个应用程序:pm2 stop id
重启所有应用程序:pm2 restart all
关闭并删除所有应用:pm2 delete all
删除指定应用:pm2 delete id

4.2nginx

nginx安装搭建Nginx服务器_江河地笑的博客-CSDN博客

ftp资源服务器那,可以不配,直接放在文件里也可以

ftp资源服务器 搭建FTP资源服务器_江河地笑的博客-CSDN博客

只需要改点nginx.conf,代码如下

# nuxt start
upstream nuxttest{ #分配需要代理的服务
    server localhost:3000; #代理本地的nuxt服务
}
server {
  listen 80;
  server_name jinruixiang.top; #你的域名

  location / {
   proxy_pass http://nuxttest; # 代理upstream模块(这里不能直接代理端口否则_nuxt文件目录无法找到)
   index index.html index.htm;
   # try_files $uri $uri/ /index.html; #解决页面刷新404问题
  }
        # 这边是我配置的ftp资源服务器,搭建在我博客里
 location /files {
	alias  /home/user-file/files;
  }

}
# nuxt end

5.部署在linux服务器

首先把前端nuxt项目下的几个文件放到linux中,放在一个文件夹下

 再依次执行

npm install

npm start (属于一关闭服务器就打不开网站了)

用pm2管理(持久):pm2 start npm --name 你项目的名称 -- run start

我后端是用springboot写的打成jar包放在服务器里是9000端口

nohup java  -jar xxx.jar &

然后浏览器输入jinruixiang.top

可以了,这个nuxt我才学了一天多,还有很多不太懂的地方,如果有写错的地方,希望可以斧正!

6.ssr渲染,利于seo

优化seo基础分为两步,第一步是tdk,懂得都懂,就是标题描述关键字,Nuxt好设置呢,可以全局设置也可以局部设置,无需其他操作

全局

export default {
  server:{
    port:3000,
    host:'0.0.0.0'
  },
  srcDir: 'src/',
  mode: 'universal',
  // Global page headers: https://go.nuxtjs.dev/config-head
  head: {
    title: '金瑞祥贴金首页-专业贴金箔-贴金箔价格-大理石刻字[不满意不收费]',
    htmlAttrs: {
      lang: 'en'
    },
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: '「经营范围~地道」:【贴金装潢】|【佛像贴金】|【大理石贴金】|【大理石刻字】|【庙宇装潢】|【酒店贴金】|【金字招牌】|【网站工程】 「十年老厂」 「联系电话」:13951638402"' },
      {hid:'keywords',name:'keywords',content:'贴金箔,刻字,佛像贴金,公司门牌,贴金工艺'},
      { name: 'format-detection', content: 'telephone=no' }
    ],
    link: [
      { rel: 'icon', type: 'image/x-icon', href: '~/static/favicon.ico' }
    ]
  },
}

局部

export default {

  head: {
    title: '金瑞祥贴金留言页-贴金价格留言-贴金联系方式-老板评价',
    meta: [
      {
        hid: 'description',
        name: 'description',
        content: '金瑞祥贴金经营数十年,不满意不收费,精通【贴金装潢】|【佛像贴金】|【大理石贴金】|【大理石刻字】|【庙宇装潢】'
      },{
         hid: 'keywords',
        name: 'keywords',
        content: '南京佛像贴金,公司门牌,刻字'
      }
    ],
    
  },
}

第二步是ssr服务端渲染,也就是动态页面可以提前渲染

比如我这个留言页面,如果我不进行ssr渲染,我这个div标签里面就没有留言的信息,如果我进行ssr服务端渲染,div里面就填充了从数据库获取过来的数据,如下图所示(Safari浏览器,来源标签里面的文件,div内容是处于倒数几十行) 

如何做到呢?

  <div class="comment" v-for="(item, index) in comment_list" :key="index">
        <el-image
          class="header_img"
          :src="require(`@/assets/img/random_header_img/${item.headerImg}.png`)"
          alt="随机头像"
        ></el-image>

        <span class="phone">{{ item.username | mobilePhoneFilter }}</span>
        <p class="text">{{ item.content }}</p>
        <p class="time">{{ item.createTime }}</p>
      </div>

//上面这是我如何用这些数据
//下面是使用asyncData提前渲染

import axios from 'axios'
export default {
  async asyncData() {
    let  queryInfo= {
        query: "",
        pageNum: 1,
        pageSize: 6,
      }
     let rs = await axios.get("/api/comment/all", {
      params:{
            ...queryInfo
        }
    });
    return {
      comment_list:rs.data.comments,
      total:rs.data.total
    };
  },
}

然后给大家整个更复杂点,比如是文章列表页面,点击文章标题进入详情,这里采用的是路由传参id嘛,既然asyncData无法获取this.route。。。就用asyncData中的context

export default {
  async asyncData(context) {
    console.log(context.params.id);
    let rs = await axios.get("/api/article/articleDetails", {
      params: {
        id: context.params.id,
      },
    });
    let article = rs.data.article;
    let nextArticle = {};
    let preArticle = {};
    if (rs.data.nextArticle !== null) {
      nextArticle = rs.data.nextArticle;
    } else {
      nextArticle.title = "已经是最后一篇了";
    }
    if (rs.data.preArticle !== null) {
      preArticle = rs.data.preArticle;
    } else {
      preArticle.title = "已经是第一篇了";
    }
    return {
      article: article,
      nextArticle: nextArticle,
      preArticle: preArticle,
    };
  },

 对应实现的网站是金瑞祥贴金首页-专业贴金箔-贴金箔价格-大理石刻字[不满意不收费]

希望可以给大家带来帮助,喜欢就点个赞吧

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江河地笑

实践是检验真理的唯一标准

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值