1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/easytuan-nuxt-elm

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_zh-EN.md 12 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 12:04 75a82da

Введение

Используйте Nuxt2 в качестве сервера рендеринга Vue, подходит для студентов, которые только начинают работать или готовятся к изучению SSR-реализации Vue. Этот проект включает регистрацию, вход в систему, отображение товаров, управление адресами и т. д., от внешнего интерфейса до внутреннего и окончательного развёртывания на сервере, позволяя вам испытать разработку полного стека.

Примечание: Проект смоделирован по образцу Hungry H5 версии, обратитесь к последнему пользовательскому интерфейсу 2018 года, пожалуйста, выберите hungry для обычного заказа. Официальный клиент.

Если сеть не очень хорошая, перейдите на узел ускорения зеркала Domestic.

Демонстрация производительности

Пожалуйста, проверьте демонстрацию здесь (пожалуйста, предварительно просмотрите с помощью режима телефона Chrome).

Мобильная сторона сканирует QR-код ниже

Документация API-интерфейса

Адрес документа интерфейса (на основе apidoc).

Технологический стек

Nuxt2 + Vue + Vuex + Vue-Router + Mint-UI.

Работа с проектом

git clone git@github.com:EasyTuan/nuxt-elm.git
# Узел ускорения зеркала Domestic: git@gitee.com: easytuan / node-elm-api.git
cd nuxt-elm
npm install
npm run dev
# Генерация шаблона
npm run tep `имя файла`
# Развёртывание pm2
npm run start

Дополнение

У этого проекта есть поддерживающая бэкенд-система. Если вы хотите испытать разработку переднего и заднего плана, вы можете загрузить соответствующую бэкенд-систему: адрес передачи фонового проекта.

Если вы занимаетесь только фронтенд-разработкой, пожалуйста, проигнорируйте это предложение.

Целевая функция

  • Список продавцов — готово
  • Корзина покупок — готово
  • Список блюд ресторана — готово
  • Оценка магазина — готово
  • Бизнес-детали — готово
  • Регистрация и вход — готово
  • Смена пароля — готово
  • Личный центр — готово
  • Красный конверт — готово
  • Адрес доставки — готово.

Введение в бизнес

Структура каталогов

├── assets
│   ├── images
│   ├── services
│   ├── styles
│   └── utils
├── components
├── config
│   └── index.js
├── layouts
├── middleware
├── pages
├── plugins
├── static
└── store

Частичное отображение скриншотов

Главная страница

.

Личная информация

.

Мой профиль

.

Заказ

.

Оценка продавца

.

Описание

Если это поможет, вы можете нажать «Star» в правом верхнем углу. Спасибо! ^_^

Или вы можете «следить» за ним, я буду продолжать открывать более интересные проекты.

Если у вас есть какие-либо вопросы, пожалуйста, сделайте это непосредственно в Issues, или вы найдёте проблему и у вас будет очень хорошее решение, добро пожаловать PR 👍

Ежедневные записи разработки

Создание шаблона nuxt

Здесь о проекте инициализации, я напрямую использую create-nuxt-app, предоставленный официальным веб-сайтом Nuxt.

npx create-nuxt-app <название проекта>

Это позволит вам сделать несколько выборов:

  1. Выберите между интегрированными серверными фреймворками:

    • Нет (Nuxt Default server)
    • Express
    • Koa
    • Hapi
    • Feathers
    • Micro
    • Adonis (WIP)
  2. Выберите свой любимый UI-фреймворк:

    • Нет
    • Bootstrap
    • Vuetify
    • Bulma
    • Tailwind
    • Element UI
    • Buefy
  3. Выберите нужный режим Nuxt (Universal или SPA)

  4. Добавьте модуль axios, чтобы легко отправлять HTTP. Запросы к вашему приложению

  5. Добавьте ESLint, чтобы проверять код на соответствие спецификациям и выявлять ошибки при сохранении.

  6. Добавьте Prettier, чтобы форматировать/украшать код при сохранении.

Запустите локальный сервис

npm run dev

access http://localhost:3000, теперь давайте посмотрим на инициализированный каталог проекта.

Примечание: Nuxt будет читать файл Vue по умолчанию в страницах и автоматически генерировать маршруты. Если вам нужно настроить маршрут, вы можете настроить соответствующие параметры в nuxt.config.js.

### Инкапсуляция запросов

Необходима изоляция данных и презентационных слоёв, поэтому фронтенд поддерживает шаблон проектирования MV*, и инкапсуляция запроса является нашим первым шагом. Здесь я выбрал axios в качестве клиента HTTP-запросов. Axios совместим с браузером и узлом. Он также обеспечивает перехват запросов, перехват ответов и т. д., так что мы можем разрабатывать более полезные функции.

Написано в `config/index.js`:

```javascript
module.exports = {
  IS_RELEASE: true,

  BASE_URL: `http://localhost:3000/api`,

  // BASE_URL: `https://elm.caibowen.net/api`,

  // IMG_URL: 'http://localhost:9000/',

  IMG_URL: 'https://easytuan.gitee.io/node-elm-api/public/',

  HEADERS: {
    'Content-Type': 'application/json;charset=UTF-8'
  },

  TIMEOUT: 12000
};

Написано в assets/utils/request.js:

import axios from 'axios';
import config from '~/config';
import { Toast } from 'mint-ui';

axios.defaults.baseURL = config.BASE_URL;
axios.defaults.timeout = config.TIMEOUT;
axios.defaults.headers = config.HEADERS;

axios.interceptors.request.use(request => {
  if (!config.IS_RELEASE) {
    console.log(
      `${new Date().toLocaleString()}【 M=${request.url} 】P=`,
      request.params || request.data
    );
  }
  return request;
}, error => {
  return Promise.reject(error);
});

export default async (options = { method: 'GET'}) => {
  let isdata = true;
  if (
    options.method.toUpperCase() !== 'POST' &&
    options.method.toUpperCase() !== 'PUT' &&
    options.method.toUpperCase() !== 'PATCH'
  ) {
    isdata = false;
  }
  const res = await axios({
    method: options.method,
    url: options.url,
    data: isdata ? options.data : null,
    params: !isdata ? options.data : null
  });
  if (res.status >= 200 && res.status < 300) {
    if (!config.IS_RELEASE) {
      console.log(
        `${new Date().toLocaleString()}【接口响应:】`,
        res.data
      );
    }
    // 浏览器环境弹出报错信息
    if(typeof window !== "undefined" && res.data.code !== 0) {
      Toast(res.data.msg);
    }
    return res.data;
  } else {
    if(typeof window !== "undefined" && res.data.code !== 0) {
      Toast('请求错误');
    }
  }
};

Наконец, все запросы API записываются в файл server.js для упрощённого унифицированного управления.

Обработка междоменных запросов

Студенты, которые использовали vue, наверняка знают, что для междоменного взаимодействия в проекте vue-cli инкапсулирует опцию proxy в webpack. Она предоставляет опцию под названием proxyTable, которая представляет собой интеграцию proxy в webpack и стороннего плагина http-proxy-middleware.

К сожалению, в Nuxt нет конфигурационного элемента proxyTable для настройки междоменной конфигурации. К счастью, в Nuxt вы можете напрямую обрабатывать междоменные запросы, настраивая http-proxy-middleware. К счастью, Nuxt официально предоставляет два пакета для обработки проблемы междоменных запросов с помощью axios.

Сначала установите его:

npm i @nuxtjs/axios @nuxtjs/proxy -D

Затем настройте его в файле nuxt.config.js:

modules: [
  '@nuxtjs/axios',
  '@nuxtjs/proxy'
],
proxy: [
  [
    '/api',{
      // target: 'http://localhost:9000',
      target: 'https://elm-api.caibowen.net',
      changeOrigin: true,
      pathRewrite: { '^/api' : '/' }
    }
  ]
],

После этого вы сможете спокойно использовать свой axios для междоменных запросов.

Развёртывание проекта

На этом этапе вы должны сначала убедиться, что у вас есть собственный сервер. Если нет, поспешите купить.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/easytuan-nuxt-elm.git
git@api.gitlife.ru:oschina-mirror/easytuan-nuxt-elm.git
oschina-mirror
easytuan-nuxt-elm
easytuan-nuxt-elm
master