稀土掘金 稀土掘金

nuxt 入门学习

Nuxt介绍

Nuxt.js 是一个基于 Vue.js 的通用应用框架。
预设了利用Vue.js开发服务端渲染的应用所需要的各种配置,同时,也为基于 Vue.js 的应用提供生成对应的静态站点的功能。

nuxt运作

Nuxt.js 集成了以下组件/框架,用于开发完整而强大的 Web 应用:

Vue 2
Vue-Router
Vuex (当配置了 Vuex 状态树配置项 时才会引入)
Vue-Meta

另外,Nuxt.js 使用 Webpack 和 vue-loader 、 babel-loader 来处理代码的自动化构建工作(如打包、代码分层、压缩等等)。

Nuxt 特性

  • 基于 Vue.js
  • 自动代码分层
  • 服务端渲染
  • 强大的路由功能,支持异步数据
  • 静态文件服务
  • ES6/ES7 语法支持
  • 打包和压缩 JS 和 CSS
  • HTML头部标签管理
  • 本地开发支持热加载
  • 集成ESLint
  • 支持各种样式预处理器: SASS、LESS、 Stylus等等
  • 支持HTTP/2 推送

nuxt 实践

我们直接生成一个新的项目看一下,start ~

从图中可见很多选项,包含服务端应用,前端UI框架,axios,语法校验,应用模式等,这个大家根据项目自行选择即可。
安装完毕~我们去看看目录结构吧~

目录十分清晰

跑一下~

校验报错~找到对应页面,control+s手动保存一下就好

OK~我们来看看主要配置

Nuxt 主要配置

layouts

用于页面布局,layouts/default.vue,可用于页面的通用布局,也可以自定义布局,在页面中通过layouts引用即可

<nuxt/>这个就是页面的主体,在这个布局上添加的东西会展示在所有有页面上
例如:我在layout/default.vue页面添加了一行代码,在其他页面上都会展示

<template>
  <div>
    // 自定义了一行
    <p>我是default模板上加的文字</p>
    <nuxt/>
  </div>
</template>

新建pages/demo1.vue文件

<template>
  <p>我是demo1页面</p>
</template>

我们直接保存,看下展示效果
首页:

demo1:

很直观了 ~

自定义布局,在页面直接通过layouts引用即可,例:

<template>
  <p>我是demo2</p>
</template>
<script>
export default {
  layout: 'demo-template'
}
</script>

layout/error.vue为默认错误页面,可接收错误信息对象,只支持服务端部署方式

pages

page里新建文件会直接生成固定路由,无需人肉添加路由,例:http://127.0.0.1:3000/demo1

路由

Nuxt.js 依据 pages 目录结构自动生成vue-router 模块的路由配置。
页面之间可以通过<nuxt-link>跳转,这个和我们使用router-link一样。
动态路由在文件前面添加_即可,路由组件内也可内置参数校验器,会返回一个布尔值,例:

export default {
  validate ({ params }) {
    // 必须是number类型
    return /^\d+$/.test(params.id)
  }
}

此外还支持嵌套路由,动态嵌套路由等,更多请查看 路由-Nuxt.js

nuxt.config.js

这个文件是个灵魂文件,一切的配置都在这里集成

const pkg = require('./package')

module.exports = {

  // 初始化的选过的,别乱改
  mode: 'universal',

  /*
  ** Headers of the page
  ** 基本没啥需要在这改的,页面的自定义内容可到页面具体配置
  */
  head: {
    title: pkg.name,
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: pkg.description }
    ],
    link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }]
  },

  /*
  ** Customize the progress-bar color
  ** color	String	'black'	进度条的颜色
  ** failedColor String	'red'	页面加载失败时的颜色 (当 data 或 fetch 方法返回错误时)。
  ** height	String	'2px'	进度条的高度 (在进度条元素的 style 属性上体现)。
  ** throttle	Number	200	在ms中,在显示进度条之前等待指定的时间。用于防止条形闪烁。
  ** duration	Number	5000	进度条的最大显示时长,单位毫秒。Nuxt.js 假设页面在该时长内加载完毕。
  ** rtl	Boolean	false	从右到左设置进度条的方向。
  ** 可在页面禁用
  */
  loading: { color: '#fff' },

  /*
  ** 该配置项用于定义应用的全局(所有页面均需引用的)样式文件、模块或第三方库。
  ** 如果要使用 sass 就必须要安装 node-sass和sass-loader 。
  */
  css: [
    '@/assets/css/main.scss'
  ],

  /*
  ** 在根目录plugins下添加的插件,需要在这指定路径,可配置参数:
  ** src: String (文件的路径)
  ** ssr: Boolean (默认为 true) 如果值为 false,该文件只会在客户端被打包引入。
  */
  plugins: [{
      src:'~plugins/axios',
      ssr: false
  }],

  /*
  ** modules是Nuxt.js扩展,可以扩展它的核心功能并添加无限的集成
  ** https://zh.nuxtjs.org/guide/modules/
  */
  modules: [
    // Doc: https://github.com/nuxt-community/axios-module#usage
    '@nuxtjs/axios'
  ],

  /*
  ** https://zh.nuxtjs.org/api/configuration-build/
  ** 配置太多,基本需要扩展的配置都可以在这里添加
  */
  build: {
    /*
    ** You can extend webpack config here
    */
    extend(config, ctx) {
      // Run ESLint on save
      if (ctx.isDev && ctx.isClient) {
        config.module.rules.push({
          enforce: 'pre',
          test: /\.(js|vue)$/,
          loader: 'eslint-loader',
          exclude: /(node_modules)/
        })
      }
    }
  }
}

部署

Nuxt部署分为服务端渲染应用部署和静态应用部署,初始化项目的时候,先确定好这个再开发,以免踩坑。 服务端部署:

npm run build
npm run start

静态部署:

npm run generate

如果确定是静态部署,需要注意在服务端运行的方法都生效,比如created,asyncData等,当接入异步请求时会报错。静态部署动态路由也是不可用的。

玻璃钢生产厂家铜陵玻璃钢花盆制作福建特色商场美陈市场价泰州玻璃钢卡通雕塑价格乌鲁木齐动物玻璃钢雕塑山东商场主题创意商业美陈怎么样天津玻璃钢景观雕塑扬州校园玻璃钢雕塑金山区镜面玻璃钢雕塑产品介绍玻璃钢卡通雕塑价位沁水玻璃钢花盆花器深圳玻璃钢雕塑大全利川玻璃钢雕塑设计制作卡通雕塑玻璃钢平台哪个好甘南玻璃钢动物雕塑玻璃钢雕塑最热门特色玻璃钢花盆订购张家口玻璃钢雕塑定做北京玻璃钢雕塑规格齐全东莞黑色玻璃钢花盆玻璃钢孔子雕塑哪里有名苏州节庆商场美陈商场美陈作品集锦大全惠州玻璃钢雕塑价格合理主题玻璃钢卡通雕塑怎么样安宁市玻璃钢雕塑设计生产商杭州玻璃钢花盆设计企业玻璃钢吉祥物雕塑定制临沂玻璃钢雕塑公司合肥卡通玻璃钢雕塑生产厂安徽玻璃钢雕塑哪里有香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化