在/plugins/目錄下建立js文件前端
在nuxt.config.js文件中進行註冊my.jsvue
/**漫路*/ plugins: [ {src:'~/plugins/my.js'} ],
隨便訪問任何組件查看控制檯,快捷鍵:F12ios
咱們能夠看到輸出了兩次 第一次是咱們之前常常看到的樣子 第二次在Nuxt SSR中輸出的
由於使用的SSR技術, 前端分紅了前端客戶端和前端服務端 固然了這個也是能夠處理的, 須要在咱們步驟二中進行配置
/** *mode屬性: * 不寫mode屬性, 表示前端客戶端和前端服務端都生效 * mode: 'client' 表示是僅在前端客戶端生效 * mode: 'server' 表示是僅在前端服務端生效 */ export default { plugins: [ { src: '~/plugins/my.js' }, { src: '~/plugins/my1.js', mode: 'client' }, { src: '~/plugins/my2.js', mode: 'server' } ] }
修改nuxt.config.js , 編寫axios baseURL程序員
建立/plugins/api.js文件, 並在nuxt.config.js文件進行配置(僅前端客戶端可用)web
plugins: [ // { src: '~/plugins/my.js' }, // { src: '~/plugins/my.js',mode: 'client' }, {src:'~/plugins/my.js',mode:'server'}, {src:'~/plugins/api.js',mode:'client'} ],
修改api.js , 將下面的代碼拷貝到api.js文件中便可ajax
//1) 自定義函數 const request = { testGet : (params) => { return axios.get('/web-service/testGet',{ params }) }, testPost : (params) => { return axios.get('/web-service/testPost',params) }, //...... } //2) 定義axios變量等待接收axios,保證axios可用 var axios = null export default ({ $axios }, inject) => { //3 保存內置的axios axios = $axios //4) 將自定義函數交於nuxt inject('request', request) }
// 使用方式1:在vue中,this.$request.函數名() // 使用方式2:在nuxt的asyncData中,content.app.$request.函數名()
在其它組件中發送ajaxaxios
<template> <div> 測試axios </div> </template> <script> export default { //頁面加載成功 async mounted() { //發送ajax let baseResult = await this.$request.findAll() console.info( baseResult ) }, } </script> <style> </style>
在api.js編寫具體的功能api
//自定義函數 const request = { testGet : (params) => { return axios.get('/web-service/testGet',{ params }) }, testPost : (params) => { //axios.post('接口路徑',參數) return axios.post('/web-service/testPost',params) }, //...自定義函數就不一一舉例了... //方法名 : 函數 findAll : () => { return axios.get('/userservice/user/list') } }
若是須要在asyncData中使用自定義axios,須要修改以下配置:服務器
使其支持前端服務器端調用app
<template> <div> {{myResponse}} </div> </template> <script> export default { //頁面加載成功 (前端客戶端執行) async mounted() { //發送ajax let baseResult = await this.$request.findAll() console.info( baseResult ) }, // 前端服務端執行 async asyncData( context ) { let baseResult = await context.app.$request.findAll() return { myResponse : baseResult.data } }, } </script> <style> </style>