使用nuxt.js构建一个vue项目【1】

本文介绍了如何使用Nuxt.js搭建Vue项目,包括通过npx create-nuxt-app初始化项目,选择配置项如编程语言、UI框架、测试框架等。接着,详细讲解了配置Nuxt.js的axios模块、设置跨域代理以及安装和使用vue-swiper插件的过程。此外,还提到了vue-layer和element-ui等插件的安装和卸载方法。

使用nuxt.js构建一个vue项目

Nuxt.js 十分简单易用。一个简单的项目只需将 nuxt 添加为依赖组件即可。

确保安装了 npx(npx 在 NPM 版本 5.2.0 默认安装了):

1.使用nuxt2.0官方脚手架,我们需要全局安装npx,输入

npm i -g npx

为了快速入门,Nuxt.js 团队创建了脚手架工具create-nuxt-app

2.运行 create-nuxt-app

随后切换到想要创建项目的路径输入

npx create-nuxt-app <项目名>

npx create-nuxt-app 项目名称

配置基本信息 : 图示

create-nuxt-app v3.4.0
✨  Generating Nuxt.js project in nuxtCode
? Project name: adjust
? Programming language: JavaScript
? Package manager: Npm
? UI framework: None
? Nuxt.js modules: (Press <space> to select, <a> to toggle all, <i> to invert selection)
? Linting tools: (Press <space> to select, <a> to toggle all, <i> to invert selection)
? Testing framework: None
? Rendering mode: Universal (SSR / SSG)
? Deployment target: Server (Node.js hosting)
? Development tools: (Press <space> to select, <a> to toggle all, <i> to invert selection)
? What is your GitHub username? caolili
? Version control system: Git
- Installing packages with npm  

在这里插入图片描述

再随后会出现一堆配置项,可以集成koa,element-ui等模块,按需选yes或no即可

1.在集成的服务器端框架之间进行选择:

  • None (Nuxt 默认服务器)
  • Express
  • Koa
  • Hapi
  • Feathers
  • Micro
  • Fastify
  • Adonis (WIP)

2.选择您喜欢的 UI 框架:

  • None (无)
  • Bootstrap
  • Vuetify
  • Bulma
  • Tailwind
  • Element UI
  • Ant Design Vue
  • Buefy iView Tachyons

3.选择您喜欢的测试框架:

  • None (随意添加一个)
  • Jest
  • AVA

4.选择你想要的 Nuxt 模式 (Universal or SPA)

5.添加 axios module 以轻松地将 HTTP 请求发送到您的应用程序中。

6.添加 EsLint 以在保存时代码规范和错误检查您的代码。

7.添加 Prettie 以在保存时格式化/美化您的代码。

当运行完时,它将安装所有依赖项,因此下一步是启动项目:

cd  <项目名>

3.安装依赖

  • sass
npm i node-sass sass-loader scss-loader --save-dev

asyncAxios.js

import cookie from "./cookie";
import tool from "./tool";

export default {
  async get(context, url, params = {}) {
    params = helper.thqs(params);
    let token = cookie.get("token");
    if (!process.client) {
      const localCookie = cookie.getcookiesInServer(context.req);
      token = tool.isEmpty(localCookie.token) ? "" : localCookie.token;
    }

    token = tool.isEmpty(token) ? "" : token;

    const result = await context.$axios.get("http://" + url, {
      params,
      headers: {
        Token: token,
        Appid: "506320220E0FA6B9"
      }
    });
    // eslint-disable-next-line no-console
    return result.data.status === 200 && result.data.data
      ? result.data.data
      : false;
  },
  async post(context, url, params = {}) {
    params = helper.thqs(params);
    let token = cookie.get("token");
    if (!process.client) {
      const localCookie = cookie.getcookiesInServer(context.req);
      token = tool.isEmpty(localCookie.token) ? "" : localCookie.token;
    }

    token = tool.isEmpty(token) ? "" : token;

    const result = await context.$axios.post("http://" + url, {
      params,
      headers: {
        Token: token,
        Appid: "506320220E0FA6B9"
      }
    });
    // eslint-disable-next-line no-console
    console.log(result);
    return result.data.status === 200 && result.data.data
      ? result.data.data
      : false;
  }
}

  • 跨域服务代理
npm i @nuxtjs/axios @nuxtjs/proxy --save-dev

nuxt.config.js跨域相关配置

export default {
  // 省略
  // ...........code...............
  // 省略
  modules: ["@nuxtjs/axios"],
  axios: {
    proxy: true
  },
 
  proxy: {
    "/passport": {
      target: "https://code.com",
      changeOrigin: true,
      pathRewrite: {
        "^/passport": ""
      }
    },
    "/adjust": {
      target: "http://code.com",
      changeOrigin: true,
      pathRewrite: {
        "^/adjust": ""
      }
    }
  }
};

4.安装第三方插件

nuxt.config.jsplugins相关配置

  // 省略
  // ...........code...............
  // 省略
  plugins: [
    "@/plugins/vue-layer", 
    { 
      src:"@/plugins/vue-swiper", 
      ssr: false  //window is not defined
    },
    // ...........code...............
  ],
  // 省略
  // ...........code...............
  // 省略
  1. vue -swiper

安装
注此处有坑
1 要安装指定版本
2 配置相关 nuxt.config.js.

  plugins: [{ 
      src:"@/plugins/vue-swiper", 
      ssr: false  //ssr:true => window is not defined
  }],
npm install swiper vue-awesome-swiper@3.1.3 --save

vue-swiper.js

import Vue from 'vue'
import VueAwesomeSwiper from 'vue-awesome-swiper';
// 版本不同 导入样式文件有所不同 百度一下 
import 'swiper/swiper-bundle.css';
Vue.use(VueAwesomeSwiper)

swiper 在页面中的使用

<template>
<div>
    <swiper :options="swiperOption" v-if="listSlideArr" id="liveList">
        <swiper-slide class="d-flex" v-for="(slideArr, i) in listSlideArr" :key="i">
            <ul class="item list-unstyled" v-for="(item, j) in slideArr" :key="j">
                <li><span class="time"> {{item.start_time}} </span> <span class="status">{{item.type}}</span> </li>
                <li class="school">{{item.title}}</li>
                <li class="tag-group">
                    <span class="bg-red">-10分调剂</span>
                    <span class="bg-purple">-10分调剂</span>
                    <span class="bg-green">-10分调剂</span>
                    <span class="bg-blue">-10分调剂</span>
                </li>
            </ul>
        </swiper-slide>
        <div class="swiper-pagination" slot="pagination"></div>
        <div class="swiper-button-next" slot="button-next"></div>
        <div class="swiper-button-prev" slot="button-prev"></div>
    </swiper>
</div>
</template>
<script type="text/javascript">
export default {
    data() {
        return {
        	listSlideArr:[],
            // 轮播配置
            swiperOption: {
                loop: true,
                autoplay: true,
                pagination: {
                    el: '.swiper-pagination'
                },
                navigation: {
                    nextEl: '.swiper-button-next',
                    prevEl: '.swiper-button-prev',
                }
            }
        }
    }
};
</script>
  1. vue-layer

  2. element UI

npm

卸载已安装的插件

$ npm uninstall XXXX -g

查看已安装的插件

$ npm ls
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值