@Bios
2018-12-10T08:37:39.000000Z
字数 2556
阅读 1558
NuxtJs Vue
基于
nuxt2.0
$ yarn create nuxt-app <项目名>
或者:
$ npx create-nuxt-app <项目名>
确保安装了npx(npx在NPM版本5.2.0默认安装了)
生成的目录结构

├─assets 资源目录,未编译的静态资源如less、js├─components 组件目录├─layouts 布局目录├─middleware 中间件├─node_modules├─pages 页面目录├─index.vue├─....├─plugins 插件├─static 静态文件目录├─store vuex store

$ yarn add node-sass sass-loader -D
用
yarn安装node-sass可能会报错,可以用npm安装
安装成功之后,就可以写sass了。
// nuxt.config.jscss: ['@/assets/css/index.scss']
async asyncData ({ app }) {let { data } = await app.$axios.get('https://api.myjson.com/bins/cg8ga')return { data }}
$ yarn add @nuxtjs/axios @nuxtjs/proxy
// nuxt.config.jsmodules: ['@nuxtjs/axios'],// 跨域代理axios: {prefix: '/api',proxy: true // Can be also an object with default options},proxy: {'/api': {target: 'http://xxx',pathRewrite: {'^/api/': ''}}},
// plugins/axios.jsexport default function ({ $axios, redirect }) {$axios.onRequest(config => {// console.log(1)console.log('Making request to ' + config.url)})$axios.onResponse(response=>{if (process.browser) { //判断是否为客户端console.log('on response!')}})$axios.onError(error => {const code = parseInt(error.response && error.response.status)if (code === 400) {redirect('/400')}})}// nuxt.config.jsplugins: ['~/plugins/axios'],
head: {title: 'xxx',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' },{ rel: 'stylesheet', type: 'text/css', href: 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css'}],script: [{src: 'https://code.jquery.com/jquery-3.1.1.min.js'},{src: 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js'}]}
$ yarn add element-ui
// plugins/element-ui.jsimport Vue from 'vue'import ElementUI from 'element-ui'export default ()=>{Vue.use(ElementUI)}// nuxt.config.jscss:['element-ui/lib/theme-chalk/index.css'],plugins:['~/plugins/element-ui']
到此,就可以在页面中使用了。
要安装babel-plugin-component
$ yarn add babel-plugin-component -D
// plugins/element-ui.jsimport Vue from 'vue'import {Button} from 'element-ui' // 引入按钮组件export default ()=>{Vue.use(Button)}
assets文件目录下nuxt.config.js中配置css
css: ['@assets/font-awesome-4.7.0/css/font-awesome.min.css']
可以将解压出来的文件中的Less和sass文件删除,只保留css文件。也可以只保留sass或者less。减少没有用的代码!
// plugins/vue-inject.jsimport Vue from 'vue'Vue.prototype.$myInjectedFunction = (string) => console.log("This is an example", string)// nuxt.config.jsplugins: ['~/plugins/vue-inject']
在页面中使用
this.$myInjectedFunction('test')调用