nuxt问题

axios 添加公共参数,比如从url上取参数

在plugins文件夹下面建个api.js,然后在nuxt-config.js配置

 plugins: [{
    src: '@/plugins/api',
  }],

import axios from './axios'
import apiConfig from './api-config'
import utils from './utils'
import Vue from 'vue'

export default ({store, app}) => {
  let methods = ['get','post','put','patch','delete'];
  Vue.prototype.server=app.context.server={}
  for (let method of methods) {
    app.context.server[method]=Vue.prototype.server[method] = function (key, data={}, option={}) {
      let argArr=[]
      let commonData={
        lang:store.state.lang
      }
      data=utils.extend(commonData,data)
      
      if(!key){
        throw new Error('\'key\' argument in server function don\'t have a value')
      }else if(!apiConfig[key]){
        throw new Error(key + ' not defined in \'api-config\' file')
      }
      if(method === 'get'){
        option.params = data
        argArr.push(apiConfig[key], option)
      }else if(method === 'post' || method === 'put' || method === 'patch'){
        argArr.push(apiConfig[key], data, option)
      }
      return axios[method].apply(null, argArr)
        //    return axios[method](apiConfig[key], data, option)
        .then((response) => {
          let resData = response.data
          
          if (resData.code === 1) {
            let msg = '系统异常'
            // Vue.prototype.$confirm(msg, '错误', {
            //   confirmButtonText: 'OK',
            //   showCancelButton: false,
            //   type: 'error'
            // })
          }
          
          return resData
        })
        .catch((err) => {
          // Vue.prototype.$confirm(err.config.url + ' ' + err.response.statusText, '错误', {
          //   confirmButtonText: 'OK',
          //   showCancelButton: false,
          //   type: 'error'
          // })
          console.error(err)
          return err
        })
    }
  }

//  console.log(app.context.server,6547)

}
完成后就可以在页面中引用
```javascript
  asyncData (context) {
    return context.server.post('getStyleDetail',{"designId": 101971

    }).then((res) => {
      return { title: res.message }
    })
  },
  mounted(){
     this.server.post('getStyleDetail',{
      "designId": 101971
     }).then((res) => {
      this.title=res.message
   })
#### # [how to write global router-function in nuxt.js](https://stackoverflow.com/questions/45509472/how-to-write-global-router-function-in-nuxt-js)
You can create a plugin for Nuxt
create a `plugin/route.js` file:

export default ({ app }) => {
// Every time the route changes (fired on initialization too)
app.router.afterEach((to, from) => {
//do something to validate
}
}

and update your `nuxt.config.js` file:

plugins: ['~/plugins/route']


More details about Nuxt plugins: [https://nuxtjs.org/guide/plugins](https://nuxtjs.org/guide/plugins)

#### Cannot read property '_t' of undefined
```javascript
import Vue from 'vue'
import VueI18n from 'vue-i18n'

Vue.use(VueI18n)

export default ({ app, store }) => {
  // Set i18n instance on app
  // This way we can use it in middleware and pages asyncData/fetch
  app.i18n = new VueI18n({
    locale: store.state.locale,
    fallbackLocale: 'en',
    messages: {
      'en': require('~/locales/en.json'),
      'fr': require('~/locales/fr.json')
    }
  })

  app.i18n.path = (link) => {
    if (app.i18n.locale === app.i18n.fallbackLocale) {
      return `/${link}`
    }

    return `/${app.i18n.locale}/${link}`
  }
}
参考:https://zh.nuxtjs.org/examples/i18n#codefund_ad
http://kazupon.github.io/vue-i18n/guide/lazy-loading.html

多语言vue-i18n

nuxtjs [vue-i18n] Value of key 'message.hello' is not a string!

import {i18n,loadLanguageAsync} from '~/setup/i18n-setup'
export default function ({app}) {
  app.router.beforeEach((to, from, next) => {

    const urlLang = to.params.lang

    let lang
    if(urlLang === '1'){
      lang='en'
    }else if(urlLang === '0'){
      lang='sa'
    }
    loadLanguageAsync(lang).then(() => next())
  })
}

to.params.lang为undefined,改成to.query.lang,
url 为http://localhost:3000/test?lang=1,需要从to.query中取。

页面添加公共样式:

在 nuxt.config.js 中添加 CSS 资源:
Nuxt.js 让你可以配置全局 CSS 文件、模块、库(每个页面都会被引入)。

module.exports = {
  css: [
    // 加载一个 node.js 模块
    'hover.css/css/hover-min.css',
    // 同样加载一个 node.js 模块,不过我们定义所需的预处理器
    { src: 'bulma', lang: 'sass' },
    // 项目中的 CSS 文件
    '~assets/css/main.css',
    // 项目中的 Sass 文件
    { src: '~assets/css/main.scss', lang: 'scss' } // 指定 scss 而非 sass
  ]
}

参考:https://zh.nuxtjs.org/api/configuration-css

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容