Re:從零開始的Vue項目搭建

Re:從零開始的Vue項目搭建

  • 初始的終結與結束的開始
  • Nodejs項目的簡單測試
  • 從零開始
    • webpack開發模式
    • webpack編譯打包
  • 后記

初始的終結與結束的開始

最開始接觸vue項目搭建是從vue-cli開始,模板式操作,一鍵搞定,幾乎可以無縫進入代碼開發階段,這對新人來說很友好,馬上就能夠一邊看教程,一邊測試代碼,我當初就是這么學vue的(順便提一下,我在學習vue之前沒接觸過任何前端框架,連Nodejs都沒接觸過,以前做前端的時候只會html+css/sass+js這種形式),但是這對新人也不好,因為模板搭建的東西往往很全面,全面就意味著東西很多,至于項目是怎么運行的,那些模板生成的文件都代表什么意思,在項目中起到什么作用,等等等,對新人來說一時半會兒很難搞清除,尤其是像我這總沒接觸過nodejs的人來說更甚。

所以在學習了一段時間的vue之后,我決定回到最初,開始學習如何從零搭建vue項目。

在搭建vue項目之前先了解一下Nodejs項目,因為vue項目其實就是Nodejs項目,了解Nodejs項目不僅有利于學習了解vue項目,并且更具有擴展性和通用性。

一個Nodejs項目的創建過程,大致分為 1.創建項目目錄,2.初始化項目,3.安裝依賴模塊,4.進入開發過程

mkdir myproject   # 創建項目目錄
cd myproject      # 進入項目目錄
npm init          # 初始化項目

接下來會引導你創建一個名為package.json的文件,它是Nodejs項目所必須的,里面記錄了項目名稱,版本,描述,關鍵詞,作者,腳本命令,生產環境,開發環境等等。關于package.json的完整字段信息可以百度。

輸入代碼開始安裝模塊
npm install <package>僅安裝模塊,
npm install <package> --save安裝模塊并在生產環境dependencies中記錄包名和版本,
npm install <package> --save-dev安裝模塊并在開發環境devDependencies中記錄包名和版本。

這就好比,剛剛初始化Nodejs項目相當于干細胞,根據安裝的模塊和依賴不同,就會成為不同的項目。好,接下來,我們就在這個基礎Nodejs項目上去搭建vue項目

Nodejs項目的簡單測試

這里先測試一下如何在Node中渲染html,熟悉Node的同學可以跳過。在項目目錄下添加一個入口文件index.html,我們的vue項目需要在html中進行渲染,然后在index.html中隨便寫的東西,方便我們看到效果,比如<h1>hello world</h1>?

|-- build
|   |-- run.js
|-- node_modlues
|   |-- ...
|-- index.html
|-- package.json

package.jsonscripts字段中添加npm的命令縮寫,node ./build/run.js,這是一條node語句,表示使用 node 運行run.js

"scripts": {"start": "node ./build/run.js"},

./build/run.js內容

var express = require('express')
var path = require('path')
var app = express()app.get('/', function (request, response) {var root = path.resolve('.')response.sendFile( root + '/index.html')
})var server = app.listen(8080, '127.0.0.1', function () {var host = server.address().addressvar port = server.address().portconsole.log("Server running at http://%s:%s", host, port)
})

我們用到了express模塊,這是一個很基礎,但也很重要的Nodejs框架,先安裝npm insall express --save-dev

接下來我們使用命令npm run start運行程序,控制臺會顯示如下信息

D:\wwwroot\myproject>npm run start> myproject@1.0.0 start D:\wwwroot\myproject
> node ./build/run.jsServer running at http://127.0.0.1:8080

是不是感覺和vue-cli搭建的模板工程很像,然后我們去瀏覽器輸入http://127.0.0.1:8080就能看到我們在index.html中寫的內容了,更改內容,然后刷新頁面再看看效果。

從零開始

(從零開始的意義:大家可以放棄之前 Nodejs項目的測試 所做的更改,重新初始化一個項目,不用安裝任何模塊,一切從這里開始)

Nodejs項目的運行大致如上,但和我們的目標還相去甚遠,要搭建vue項目,首先得配置開發環境(即安裝模塊)。

首先是安裝 vuewebpack 模塊,vue是我們項目的核心,這個沒啥說的。webpackJavaScript的打包模塊,它將瀏覽器不能直接運行的語言打包處理成適合的格式以供瀏覽器使用。因為vue是發布所需要的,所以使用以下命令

npm install vue --save
npm install webpack --save-dev

但是光有這兩個模塊是不夠的,

  • webpack 4.x 之后將 cli 單獨拎了出來,所以還需要webpack-cli模塊,
  • vue項目中,我們使用了.vue單文件形式,要加載這些單文件我們需要vue-loader模塊,
  • 為了轉化ES6高級語法,所以需要 babel-loader @babel/core @babel/preset-env 模塊
  • 需要加載css,需要 css-loader模塊,(如果要使用sass,那么還需要node-sasssass-loader
  • 需要引用圖片或者其他資源文件,則需要 url-loaderfile-loader
  • 每次更新代碼后,我們都需要重新編譯以便查看效果,這樣會很麻煩,使用webpack提供的開發工具webpack-dev-server可以幫助我們在代碼發生變化后自動編譯代碼
  • 最后我們還需要渲染html的插件html-webpack-plugin

綜上,我們還需要安裝如下模塊

npm install vue-loader --save-dev
npm install webpack-cli webpack-dev-server --save-dev
npm install babel-loader @babel/core @babel/preset-env --save-dev
npm install css-loader --save-dev
npm install url-loader --save-dev
npm install html-webpack-plugin --save-dev

webpack開發模式

安裝好模塊后,回顧Nodejs項目,我們現在需要添加npm命令縮寫,webpack配置文件

package.jsonscripts字段中添加npm的命令,(使用webpack-dev-server運行)

"scripts": {"dev": "webpack-dev-server --inline --progress --config webpack.config.js"},

在項目目錄下新建webpack配置文件webpack.config.js,配置文件代碼

const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const VueLoaderPlugin = require('vue-loader/lib/plugin')module.exports = {// 配置 webopack 的入口 / 出口文件entry: {app: './src/main.js'},output: {filename: 'bundle.js',path: path.join(__dirname, 'dist')},// 配置 webpack 的服務器信息devServer: {// 默認配置為http://localhost:8080},// 定義 webpack 的模式mode: 'development',// 配置 loader 載入規則module: {rules: [{test: /\.vue$/,loader: 'vue-loader'},{test: /\.js$/,loader: 'babel-loader'},{test: /\.css$/,use: ['vue-style-loader','css-loader']},{test: /\.(jpg|png|bmp)$/,use : 'url-loader'}]},// 添加解析文件后綴,添加后在引入文件時可以省略后綴只寫文件名resolve: {extensions: ['*', '.js', '.vue', '.json']},// 配置插件項plugins: [// vue-loader 15.x 之后,必須引入這個插件才能正常工作new VueLoaderPlugin(),// 用來指定渲染的模板文件new HtmlWebpackPlugin({template: './index.html'})]
}

配置好webpack后我們需要添加其他文件內容,項目結構如下

|-- node_modlues
|   |-- ...
|-- src
|   |-- App.vue
|   |-- main.js
|-- index.html
|-- package.json
|-- webpack.config.js

./index.html內容

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Vue</title>
</head>
<body><div id="app"></div>
</body>
</html>

./src/main.js內容

import Vue from 'vue'
import App from './App'new Vue({el: '#app',render: h => h(App)
})

./src/App.vue內容

<template><div id="app">Vue App</div>
</template><script>
export default {name: "App"
}
</script><style>
#app{color: gray;
}
</style>

輸入命令npm run dev運行程序,就可以看到效果啦~~~,然后修改代碼測試一下vue,看看效果
在這里插入圖片描述

webpack編譯打包

到這一步其實就相對容易了,webpack本身就是用于編譯打包,webpack的配置文件也寫好了,只需要使用webpack打包即可

添加build命令,然后使用npm run build命令編譯打包

"scripts": {"dev": "webpack-dev-server --inline --progress --config webpack.config.js","build": "webpack --config webpack.config.js"},

打包完成后,會在項目目錄下生成/dist文件夾,所有編譯好的文件都在該目錄下

后記

寫到這里,一個基礎的簡單的vue項目其實就已經搭建好了,整個過程與其說是 如何從零搭建Vue項目 ,不如說是 如何使用webpack搭建項目 ,所以在今后的學習中不妨分成兩個板塊去學習

  • 使用 webpack 進行項目搭建,了解 webpack 的配置與命令,推薦閱讀 webpack 官方中文文檔
  • 如何配置 vue-loader ,推薦閱讀 Vue Loader 官方中文文檔

了解熟悉 webpack 可以讓我們快速搭建前端框架項目或是自定義項目

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281338.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281338.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281338.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在數據庫插入帶小數點數據的問題

想在mysql插入以下數據設計表的時候沒有注意,之前都用的int,這次換成了double,但是插入第一條3.50的時候數據庫顯示為:查了之后知道是設計表的時候沒有注意小數點的設置轉載于:https://juejin.im/post/5c0f61bb6fb9a049ea38cbe9

oracle 11g 創建 job 20

15-10-19 23:48:04分類&#xff1a; Oracle--創建一次執行的匿名塊任務&#xff0c;成功調用一次后job消失BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name > my_new_job2, job_type > PLSQL_BLOCK, job_action &g…

Jzoj5317 Func

f(1)1 f(2x)f(x) f(2x1)f(x)f(x1) 給出n<10^6&#xff0c;求:所有的i滿足f(i)n 第一道類歐算法 我們考慮一個性質 f(2x1)f(x)f(x1)f(2x)f(2x2) 所以&#xff0c;顯然有f(2x1)>f(2x) f(2x1)>f(2x2) 那么現在我們知道了f(2x1),自然考慮枚舉一個f(2x) 可以按照以下形式…

C# WPF 用代碼畫一幅圖(*精品*)

概述有時候我們的程序界面中需要顯示一些簡單的示意圖&#xff0c;一般我們有原圖的話直接嵌入我們程序就可以&#xff0c;但有時候我們沒有原圖&#xff0c;這時候我們不妨用代碼自己畫出來.今天小編要給大家展示的是這樣一副圖片&#xff1a;接下來&#xff0c;我就用代碼純手…

礦難讓顯卡壓了那么多貨咋辦?NV如是說

2019獨角獸企業重金招聘Python工程師標準>>> 在蘇州 GTC 開幕的幾天前&#xff0c;英偉達剛剛遭遇了一次股價的腰斬。 近來加密貨幣的熱度漸低&#xff0c;受到挖礦熱潮照顧許多的英偉達「礦機」銷量受到打擊&#xff0c;甚至出現了嚴重的庫存危機&#xff0c;加上近…

花式看超級碗 人工智能、大數據在碗里

“超級碗”可不是一個大碗!!!超級碗(Super Bowl)是美國國家美式足球聯盟(也稱為國家橄欖球聯盟)的年度冠軍賽&#xff0c;勝者被稱為“世界冠軍”。超級碗一般在每年1月最后一個或2月第一個星期天舉行&#xff0c;那一天稱為超級碗星期天(Super Bowl Sunday)。超級碗是比賽的名…

Git分支操作與遠程倉庫的使用

Git分支操作本地倉庫創建分支合并分支刪除分支遠程倉庫push 推送遠程分支pull 拉取遠程分支fetch 更新遠程分支本地分支與遠程分支的跟蹤關系本地倉庫 由于Git的分布式特性&#xff0c;所以沒有絕對的本地和遠程概念&#xff0c;一切都是相對的。對于分支的操作&#xff0c;個…

SimMechanics/Second Generation倒立擺模型建立及初步仿真學習

筆者最近搗鼓Simulink&#xff0c;發現MATLAB的仿真模塊真的十分強大&#xff0c;以前只是在命令窗口敲點代碼&#xff0c;直到不小心敲入simulink&#xff0c;就一發不可收拾。話說simulink的模塊化建模確實方便&#xff0c;只要拖拽框框然后雙擊設置屬性就可以慢慢堆建自己的…

10 行代碼提取復雜 Excel 數據

把 Excel 文件導入關系數據庫是數據分析業務中經常要做的事情&#xff0c;但許多 Excel 文件的格式并不規整&#xff0c;需要事先將其中的數據結構化后再用 SQL 語句寫入數據庫。而一般情況下&#xff0c;結構化的工作量會比較大&#xff0c;而且很難通用&#xff0c;每次都要針…

將一個數組拆分為若干個相等數組

var a [法國,澳大利亞,智利,新西蘭,西班牙,加拿大,阿根廷,美國,0,國產,波多黎各,英國,比利時,德國,意大利,意大利]; var b []; var result []; var k 0; for(var i 0; i<a.length; i){ if(i%3 0){ b []; for(var j 0; j<3; j){ if(a[ij] undefined){ continue; …

人工智能模型的網絡結構可視化

本文主要介紹人工智能模型的網絡結構可視化的常見方法。對于使用神經網絡模型來說&#xff0c;我們主要關注的是模型的輸入和輸出。在 ML.NET 中使用 ONNX 模型時&#xff0c;我們就需要了解這些信息&#xff0c;以便在構成神經網絡的所有層之間生成連接映射。下圖就是昨天 《Y…

Git 撤銷操作 / 回滾歷史

撤銷操作 git checkout -- <filename>&#xff0c;放棄文件的當前更改&#xff0c;回到最近一次的提交狀態git reset HEAD <filename>&#xff0c;取消暫存文件git commit --amend&#xff0c;覆蓋上一次的提交&#xff0c;雖然不是撤銷操作&#xff0c;但有類似的…

整理ASP.NET MVC 5各種錯誤請求[401,403,404,500]的攔截及自定義頁面處理實例

http://2sharings.com/2015/asp-net-mvc-5-custom-404-500-error-hanlde https://blog.csdn.net/yhyhyhy/article/details/51003683 ASP.NET MVC 5的開發中&#xff0c;服務器的各種錯誤[如&#xff1a;401&#xff08;登錄授權驗證&#xff09;&#xff0c;403&#xff08;禁止…

url字符轉義

作者在做短鏈接功能時&#xff0c;url參數里帶了&字符&#xff0c;結果無法轉換。后來查了一下&#xff0c;發現可以用其它符號代替。下面是對應表 URL 中號表示空格 %2B 空格 URL中的空格可以用號或者編碼 %20 / 分隔目…

編輯器領域正發生變革?從面試看 Visual Studio Code 的崛起

Visual Studio Code&#xff08;VS Code&#xff09;的使用率在迅速上升&#xff0c;現在已經成為大多數工程師的首選編輯器&#xff0c;并似乎正迅速搶占其他頂級編輯的市場份額。Triplebyte 每周都會面試數百名工程師。在每次面試中&#xff0c;我們都會記錄面試者使用的編輯…

C#7.0 ref引用傳遞

1.概要在工作中大家用到引用類型是非常多的&#xff0c;大家都知道引用類型在使用過程中傳遞的是對象引用并不會發生整個對象復制。而值類型在傳遞的過程中就不一樣了&#xff0c;我曾經在編寫代碼時希望通過值類型來壓低應用程序的內存占用&#xff0c;在高并發的情況大量的對…

Vue+Axios同步請求

axios本身是沒有同步請求的&#xff0c;要實現同步請求&#xff0c;用到的是ES7的async和await ES7的異步特性async / await async用于聲明一個函數是異步的&#xff0c;await用于聲明在一個異步函數中等待語句執行完畢。也就是說await只能在async函數中使用。簡單示例如下&a…

關于vue執行打包后,如何在本地瀏覽問題

最近一個人在搗鼓vue&#xff0c;寫完項目后發現在npm run dev下可以正常訪問&#xff0c;bulid之后卻一片空白&#xff0c;查看console出現許多Failed to load resource: net::ERR_FILE_NOT_FOUND。恩&#xff0c;看了下網上評論找到了正確的方法 webpack.prod.conf.js 中outp…

ELFhash

字符串哈希算法&#xff08;以ELFHash詳解&#xff09; 更多字符串哈希算法請參考&#xff1a;http://blog.csdn.net/AlburtHoffman/article/details/19641123 先來了解一下何為哈希&#xff1a; 哈希表是根據設定的哈希函數H(key)和處理沖突方法將一組關鍵字映射到一個有限的地…

android面試詳解

前臺就是和用戶交互的進程 可見進程例如一個activity被一個透明的對話框覆蓋&#xff0c;該activity就是可見進程 服務&#xff1a;service進程 后臺一個activity按了home按鍵就是從前臺退回到后臺 標準模式&#xff1a;不管任務棧是否存在相同的activity都會創建一個新的activ…