Vue フロントエンド アーキテクチャの学習 (1)
この記事では、Vue フロントエンド アーキテクチャの学習 (1) を主に共有します。これは、皆様のお役に立てれば幸いです。
考えてみれば、私はすでに多くのアーキテクチャ プロジェクトを行っており、その中には vue ベース、react ベース、thinkPHP ベース、laravel ベースのものもあります。やりすぎると、既存のアーキテクチャについてさまざまな考えが生まれ、良い点もあれば悪い点も出てきます。つまり、まだ使い心地が良くありません。 vue-cli (特に vue-cli v3.0) はすぐに構築して使用できますが、webpack は @vue/cli
の SDK に封入されているため、よりクリーンで簡潔に使用できます。 @vue/cli
的sdk里了,用起来更加干净、简洁。
好了,介绍完毕,接下来,我就从零开始,一步一步建起前后端完全分离的前端架构了。
步骤
由于要介绍的很多,全写在一篇里,有些太长了。
所以,我会分为:
创建开发环境下的webpack配置文件
配置eslint、babel、postcss
创建项目文件、目录架构
通过koa实现本地数据接口模拟
创建发布环境下的webpack配置文件
创建测试环境下的webpack配置文件、以及测试用例 (TODO)
自动初始化构建项目(TODO)
这七篇来分别介绍。
开发
一、初始化项目
创建项目文件夹
我们就叫vue-construct
吧
初始化git
git init
初始化npm
npm init
创建项目文件
为了能让webpack跑起来,而不是一口气只讲配置而不运行一下,那样未免有些空洞,所以我们先创建一点项目文件和目录。
在这之前我们先安装两个包:vue、vue-router, npm i -S vue vue-router
。
我们将项目代码相关文件都放在名为app
ということで、 | |
---|---|
eslint、babel、postcssの設定 | |
ローカルデータの実装koaインターフェイスシミュレーションによる | |
リリース環境でWebpack設定ファイルを作成 | |
ビルドプロジェクトの自動初期化(TODO) | |
この7つ それぞれの記事を個別にご紹介します。 developments1。 | |
npm init |
|
プロジェクトファイルを作成します |
- ファイル/フォルダー
目的
app.vue
vueのメインファイルとして
common
公開コードを入れる
-
index.html
ページテンプレートファイル
index.js
- プロジェクトメインエントリファイル
- router
vueに対応するルーターファイルを置く
views
ビューファイルを置く
webpack webpack-dev-server
vue-loader
node-sass style-loader css-loader sass-loader vue-style-loader postcss postcss-loader autoprefixer extract-text-webpack-plugin
file-loader url-loader
babel babel-loader babel-plugin-syntax-dynamic-import babel-plugin-transform-object-rest-spread babel-polyfill babel-preset-env
eslint eslint-loader eslint-plugin-html babel-eslint
const webpack = require('webpack') const path = require('path') const HtmlWebpackPlugin = require('html-webpack-plugin') const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') // 为了抽离出两份CSS,创建两份ExtractTextPlugin // base作为基础的css,基本不变,所以,可以抽离出来充分利用浏览器缓存 // app作为迭代的css,会经常改变 const isProduction = process.env.NODE_ENV === 'production' const ExtractTextPlugin = require('extract-text-webpack-plugin') const extractBaseCSS = new ExtractTextPlugin( { filename:'static/css/base.[chunkhash:8].css', allChunks: true, disable: !isProduction // 开发环境下不抽离css } ) const extractAppCSS = new ExtractTextPlugin( { filename:'static/css/app.[chunkhash:8].css', allChunks: true, disable: !isProduction // 开发环境下不抽离css } ) // 减少路径书写 function resolve(dir) { return path.join(__dirname, dir) } // 网站图标配置 const favicon = resolve('favicon.ico') // __dirname: 总是返回被执行的 js 所在文件夹的绝对路径 // __filename: 总是返回被执行的 js 的绝对路径 // process.cwd(): 总是返回运行 node 命令时所在的文件夹的绝对路径 const config = { // sourcemap 模式 devtool: 'cheap-module-eval-source-map', // 入口 entry: { app: [ 'babel-polyfill', // 这里是配合babel-present-env导入的动态babel-polyfill,因此npm需dev依赖 resolve('app/index.js') ] }, // 输出 output: { path: resolve('dev'), filename: 'index.bundle.js' }, resolve: { // 扩展名,比如import 'app.vue',扩展后只需要写成import 'app'就可以了 extensions: ['.js', '.vue', '.scss', '.css'], // 取路径别名,方便在业务代码中import alias: { api: resolve('app/api/'), common: resolve('app/common/'), views: resolve('app/views/'), components: resolve('app/components/'), componentsBase: resolve('app/componentsBase/'), directives: resolve('app/directives/'), filters: resolve('app/filters/'), mixins: resolve('app/mixins/') } }, // loaders处理 module: { rules: [ { test: /\.js$/, include: [resolve('app')], loader: [ 'babel-loader', 'eslint-loader' ] }, { test: /\.vue$/, exclude: /node_modules/, loader: 'vue-loader', options: { extractCSS: true, loaders: { scss: extractAppCSS.extract({ fallback: 'vue-style-loader', use: [ { loader: 'css-loader', options: { sourceMap: true } }, { loader: 'postcss-loader', options: { sourceMap: true } }, { loader: 'sass-loader', options: { sourceMap: true } } ] }) } } }, { test: /\.(css|scss)$/, use: extractBaseCSS.extract({ fallback: 'style-loader', use: [ { loader: 'css-loader', options: { sourceMap: true } }, { loader: 'postcss-loader', options: { sourceMap: true } }, { loader: 'sass-loader', options: { sourceMap: true } } ] }) }, { test: /\.(png|jpe?g|gif|svg|ico)(\?.*)?$/, loader: 'url-loader', options: { limit: 8192, name: isProduction ? 'static/img/[name].[hash:8].[ext]' : 'static/img/[name].[ext]' } }, { test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, loader: 'url-loader', options: { limit: 8192, name: isProduction ? 'static/font/[name].[hash:8].[ext]' : 'static/font/[name].[ext]' } } ] }, plugins: [ // html 模板插件 new HtmlWebpackPlugin({ favicon, filename: 'index.html', template: resolve('app/index.html') }), // 抽离出css extractBaseCSS, extractAppCSS, // 热替换插件 new webpack.HotModuleReplacementPlugin(), // 更友好地输出错误信息 new FriendlyErrorsPlugin() ], devServer: { proxy: { // 凡是 `/api` 开头的 http 请求,都会被代理到 localhost:7777 上,由 koa 提供 mock 数据。 // koa 代码在 ./mock 目录中,启动命令为 npm run mock。 '/api': { target: 'http://localhost:7777', // 如果说联调了,将地址换成后端环境的地址就哦了 secure: false } }, host: '0.0.0.0', port: '9999', disableHostCheck: true, // 为了手机可以访问 contentBase: resolve('dev'), // 本地服务器所加载的页面所在的目录 // historyApiFallback: true, // 为了SPA应用服务 inline: true, //实时刷新 hot: true // 使用热加载插件 HotModuleReplacementPlugin } } module.exports = { config: config, extractBaseCSS: extractBaseCSS, extractAppCSS: extractAppCSS }
以上がVue フロントエンド アーキテクチャの学習 (1)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











論文のアドレス: https://arxiv.org/abs/2307.09283 コードのアドレス: https://github.com/THU-MIG/RepViTRepViT は、モバイル ViT アーキテクチャで優れたパフォーマンスを発揮し、大きな利点を示します。次に、この研究の貢献を検討します。記事では、主にモデルがグローバル表現を学習できるようにするマルチヘッド セルフ アテンション モジュール (MSHA) のおかげで、軽量 ViT は一般的に視覚タスクにおいて軽量 CNN よりも優れたパフォーマンスを発揮すると述べられています。ただし、軽量 ViT と軽量 CNN のアーキテクチャの違いは十分に研究されていません。この研究では、著者らは軽量の ViT を効果的なシステムに統合しました。

SpringDataJPA は JPA アーキテクチャに基づいており、マッピング、ORM、トランザクション管理を通じてデータベースと対話します。そのリポジトリは CRUD 操作を提供し、派生クエリによりデータベース アクセスが簡素化されます。さらに、遅延読み込みを使用して必要な場合にのみデータを取得するため、パフォーマンスが向上します。

PHP と Vue: フロントエンド開発ツールの完璧な組み合わせ 今日のインターネットの急速な発展の時代において、フロントエンド開発はますます重要になっています。 Web サイトやアプリケーションのエクスペリエンスに対するユーザーの要求がますます高まっているため、フロントエンド開発者は、より効率的で柔軟なツールを使用して、応答性の高いインタラクティブなインターフェイスを作成する必要があります。フロントエンド開発の分野における 2 つの重要なテクノロジーである PHP と Vue.js は、組み合わせることで完璧なツールと見なされます。この記事では、PHP と Vue の組み合わせと、読者がこれら 2 つをよりよく理解し、適用できるようにするための詳細なコード例について説明します。

Word でテキスト コンテンツを編集するときに、数式記号の入力が必要になる場合があります。 Word でルート番号を入力する方法を知らない人もいるので、Xiaomian は私に、Word でルート番号を入力する方法のチュートリアルを友達と共有するように頼みました。それが私の友達に役立つことを願っています。まず、コンピュータで Word ソフトウェアを開き、編集するファイルを開き、ルート記号を挿入する必要がある場所にカーソルを移動します。下の図の例を参照してください。 2. [挿入]を選択し、記号内の[数式]を選択します。下の図の赤丸で示すように: 3. 次に、下の[新しい数式を挿入]を選択します。以下の図の赤丸で示すように: 4. [根号式]を選択し、適切な根号を選択します。下の図の赤丸で示したように、

Go フレームワーク アーキテクチャの学習曲線は、Go 言語とバックエンド開発への慣れ、選択したフレームワークの複雑さ、つまり Go 言語の基本の十分な理解によって決まります。バックエンドの開発経験があると役立ちます。フレームワークの複雑さが異なると、学習曲線も異なります。

1. Llama3 のアーキテクチャ このシリーズの記事では、llama3 を最初から実装します。 Llama3 の全体的なアーキテクチャ: Llama3 のモデル パラメーターをイメージします: Llama3 モデルのこれらのパラメーターの実際の値を見てみましょう。図[1] コンテキストウィンドウ (context-window) LlaMa クラスをインスタンス化する際、変数 max_seq_len によって context-window が定義されます。クラスには他にもパラメータがありますが、このパラメータは変圧器モデルに最も直接関係しています。ここでの max_seq_len は 8K です。図[2] 語彙サイズと注意力L

Go 言語は、高速で効率的なプログラミング言語として、バックエンド開発の分野で広く普及しています。ただし、Go 言語をフロントエンド開発と結びつける人はほとんどいません。実際、フロントエンド開発に Go 言語を使用すると、効率が向上するだけでなく、開発者に新たな視野をもたらすことができます。この記事では、フロントエンド開発に Go 言語を使用する可能性を探り、読者がこの分野をよりよく理解できるように具体的なコード例を示します。従来のフロントエンド開発では、ユーザー インターフェイスの構築に JavaScript、HTML、CSS がよく使用されます。

タイトル: Go言語のmain関数をゼロから学ぶ Go言語はシンプルで効率的なプログラミング言語として開発者に好まれています。 Go 言語では、main 関数はエントリ関数であり、すべての Go プログラムにはプログラムのエントリ ポイントとして main 関数が含まれている必要があります。この記事ではGo言語のmain関数をゼロから学ぶ方法と具体的なコード例を紹介します。 1. まず、Go 言語開発環境をインストールする必要があります。公式ウェブサイト (https://golang.org) にアクセスできます。
