Настройка рабочего процесса Python Flask Frontend

Здравствуйте! Надеюсь, у вас все хорошо. В прошлом посте мы настроили структуру бэкенда нашего приложения, а в этом мы настроим рабочий процесс фронтенда для нашего приложения.

Запустите yarn init -y в структуре вашей корневой папки, чтобы настроить yarn или npm, как вам больше нравится.

yarn init -y
Вход в полноэкранный режим Выйдите из полноэкранного режима

мы получим файл package.json примерно следующего вида

{
  "name": "flask_blog",
  "version": "1.0.0",
  "repository": "git@github.com:MuhammadSaim/flask_tutorial_blog.git",
  "author": "Muhammad Saim",
  "license": "MIT"
}
Вход в полноэкранный режим Выйти из полноэкранного режима

Теперь установите все зависимости Dev для нашего проекта с помощью этой команды. В качестве инструмента сборки мы будем использовать Laravel Mix.

yarn install autoprefixer laravel-mix postcss tailwindcss -D
Войти в полноэкранный режим Выйдите из полноэкранного режима

После выполнения этой команды ваш package.json будет выглядеть следующим образом.

{
  "name": "flask_blog",
  "version": "1.0.0",
  "repository": "git@github.com:MuhammadSaim/flask_tutorial_blog.git",
  "author": "Muhammad Saim",
  "license": "MIT",
  "devDependencies": {
    "autoprefixer": "^10.4.8",
    "laravel-mix": "^6.0.49",
    "postcss": "^8.4.16",
    "tailwindcss": "^3.1.8"
  }
}
Вход в полноэкранный режим Выход из полноэкранного режима

Теперь установите зависимости проекта, которые нам понадобятся в нашем проекте. Мы будем использовать UI Kit Daisy UI от Tailwind для нашего пользовательского интерфейса.

yarn add @tailwindcss/typography daisyui jquery
Войдите в полноэкранный режим Выход из полноэкранного режима

После установки этих зависимостей наш package.json будет выглядеть следующим образом.

{
  "name": "flask_blog",
  "version": "1.0.0",
  "repository": "git@github.com:MuhammadSaim/flask_tutorial_blog.git",
  "author": "Muhammad Saim",
  "license": "MIT",
  "devDependencies": {
    "autoprefixer": "^10.4.8",
    "laravel-mix": "^6.0.49",
    "postcss": "^8.4.16",
    "tailwindcss": "^3.1.8"
  },
  "dependencies": {
    "@tailwindcss/typography": "^0.5.4",
    "daisyui": "^2.22.0",
    "jquery": "^3.6.0"
  }
}
Вход в полноэкранный режим Выйти из полноэкранного режима

Теперь создайте файл конфигурации tailwindcss для нашего проекта.

npx tailwindcss init
Вход в полноэкранный режим Выйти из полноэкранного режима

В результате будет создан tailwind.confg.js, который выглядит примерно так.

/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [],
  theme: {
    extend: {},
  },
  plugins: [],
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Теперь создайте папку src в корневом каталоге и создайте еще две папки в папке src css и js и создайте файл app.css в папке css и файл app.js в папке js. Структура ваших папок будет выглядеть следующим образом.

Откройте файл src/css/app.css и поместите туда директивы tailwind.

@tailwind base;
@tailwind components;
@tailwind utilities;
Вход в полноэкранный режим Выход из полноэкранного режима

Откройте файл src/js/app.js и установите jquery в этом файле.

window.$ = window.jQuery = require('jquery');
Войдите в полноэкранный режим Выход из полноэкранного режима

Теперь пришло время настроить Daisy UI и помощник типографики от twailwind в нашем проекте. Откройте файл tailwind.config.js и добавьте эти два элемента в массив plugins.

{
  ...,
  plugins: [
    require('@tailwindcss/typography'),
    require('daisyui')
  ]
}
Войти в полноэкранный режим Выйти из полноэкранного режима

После этого tailwind.config.js будет выглядеть следующим образом. Также добавьте шаблоны и js файлы в содержимое, чтобы tailwindcss генерировал те классы, которые используются в проекте и удалял из файла сборки те, которые проект не использует для минимизации css файла.

/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
      './application/views/**/*.jinja2',
      './application/assets/js/**/*.js',
  ],
  theme: {
    extend: {},
  },
  plugins: [
      require('@tailwindcss/typography'),
      require('daisyui')
  ],
}
Вход в полноэкранный режим Выход из полноэкранного режима

Теперь пришло время собрать эти активы с помощью нашего инструмента сборки Laravel Mix. Создайте файл webpack.mix.js в нашей корневой директории и поместите все эти конфигурации в этот файл.

const mix = require('laravel-mix');


mix.options({
  fileLoaderDirs: {
    fonts: "assets/fonts",
    images: "assets/images",
  },
});



mix.js("src/js/app.js", "application/assets/js")
  .postCss("src/css/app.css", "application/assets/css", [
    require("tailwindcss"),
  ]);
Вход в полноэкранный режим Выйдите из полноэкранного режима

Нам нужны скрипты для создания наших активов для разработки и производства, поэтому добавьте эти строки в файл package.json После добавления этих строк package.json будет выглядеть следующим образом.

{
  "name": "flask_blog",
  "version": "1.0.0",
  "repository": "git@github.com:MuhammadSaim/flask_tutorial_blog.git",
  "author": "Muhammad Saim",
  "license": "MIT",
  "scripts": {
    "dev": "npm run development",
    "development": "mix",
    "watch": "mix watch",
    "watch-poll": "mix watch -- --watch-options-poll=1000",
    "hot": "mix watch --hot",
    "prod": "npm run production",
    "production": "mix --production"
  },
  "devDependencies": {
    "autoprefixer": "^10.4.8",
    "laravel-mix": "^6.0.49",
    "postcss": "^8.4.16",
    "tailwindcss": "^3.1.8"
  },
  "dependencies": {
    "@tailwindcss/typography": "^0.5.4",
    "daisyui": "^2.22.0",
    "jquery": "^3.6.0"
  }
}
Вход в полноэкранный режим Выйти из полноэкранного режима

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

Разработка

yarn dev
Войти в полноэкранный режим Выйти из полноэкранного режима

Производство

yarn prod
Войти в полноэкранный режим Выйти из полноэкранного режима

Сервер просмотра

yarn watch
Войти в полноэкранный режим Выйти из полноэкранного режима

Это создаст ваши активы в директории assets в application/assets, вы также можете игнорировать эту директорию в файле .gitignore в директории application.

Теперь в views создайте 3 папки includes, layouts и pages создайте один файл в layouts с именем app.jinja2 и второй в директории pages с именем home.jinja2 содержание этих двух файлов здесь.

app.jinja2

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="{{ url_for('static', filename='css/app.css') }}">
    <title>{% block title %}{% endblock %}</title>
</head>
<body class="prose">

    {% block content %}{% endblock %}

    <script src="{{ url_for('static', filename='css/app.css') }}"></script>
</body>
</html>
Вход в полноэкранный режим Выход из полноэкранного режима

home.jinja2

{% extends 'layouts/app.jinja2' %}


{% block title %} Home {% endblock %}


{% block content %}
    <h1 class="text-3xl">Home</h1>
    <button class="btn btn-primary">Home</button>
{% endblock %}
Войти в полноэкранный режим Выход из полноэкранного режима

после установки всех наших шаблонов, чтобы мы могли немного изменить в нашем контроллере home.py.

from flask import Blueprint, render_template

controller = Blueprint('home', __name__)


@controller.route('/', methods=['GET'])
def index():
    return render_template('pages/home.jinja2')
Вход в полноэкранный режим Выход из полноэкранного режима

Теперь запустите ваше приложение

python run.py
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Откройте url https://127.0.0.1:5000.

Вы можете получить обновленный код на GitHub Repo

Спасибо, что были со мной.

Увидимся в следующем посте, если у вас возникнут какие-либо вопросы при работе с этим постом, не стесняйтесь комментировать.

Оцените статью
devanswers.ru
Добавить комментарий