vue項目準備與骨架搭建(一)

来源:https://www.cnblogs.com/chenyingying0/archive/2020/03/31/12608666.html
-Advertisement-
Play Games

首先保證這些條件滿足: 然後全局安裝vue cnpm install -g vue-cli 安裝完成後可以使用vue -h查看vue的幫助文檔 vue -list 查看vue支持的模板 我們接下來會用到的是webpack vue init webpack mall 項目名輸入必須是英文,我這裡輸入m ...


首先保證這些條件滿足:

 

 

然後全局安裝vue

cnpm install -g vue-cli

安裝完成後可以使用vue -h查看vue的幫助文檔

 

 

vue list 查看vue支持的模板

我們接下來會用到的是webpack

 

 

vue init webpack mall

項目名輸入必須是英文,我這裡輸入mall

 

 為什麼不選擇npm install呢,因為我們選擇的是cnpm install

 

接下來就根據上面黃色字體的提示來操作

cd mall

cnpm install

 

安裝完成後打開項目,找到根目錄下的 .eslintric.js文件

可以配置自己的代碼風格,然後通過命令行自動來修改

 

 

cnpm run lint -- --fix

修正

 

 

修改webpack配置

config目錄下的index.js

 

 

cnpm run dev

 

 

再開一個cmd,使用ipconfig查看自己的ip地址

 

 

在瀏覽器訪問:192.168.56.1:8080

 

 

文件和目錄結構

在src--assets目錄下,新建fonts/img/js/scss四個目錄

這邊存放的是公共的文件,如果是組件特有的文件,會跟自己的組件放在一起

 

在src目錄下,創建四個目錄:

pages (頁面組件)

base (公共組件,可以移植到其他項目中)

api (使用ajax或者jsonp與後端交互相關的)

 

公共資源的準備:

圖標字體,阿裡巴巴矢量圖標庫下載

將下載到的圖標字體文件放置到項目的fonts目錄中

iconfont.css文件放到scss目錄中,並重命名為_icons.scss(通常下劃線表示該文件不直接引用,而是在別的scss文件中引用)

打開_icons.scss,修改下正確的字體路徑,並且格式化代碼

 

_reset.scss 基本的樣式重置文件

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, hr, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend, input, button, select, textarea,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
  box-sizing: border-box;

  padding: 0;
  margin: 0;

  font: inherit;
  font-size: 100%;
  vertical-align: baseline;

  border: none;
  outline: none;

  -webkit-tap-highlight-color: transparent; // 去掉點擊對象時預設的灰色半透明覆蓋層(iOS)或者虛框(Android)
  -webkit-user-select: none; // 禁止選擇文字
}

html {
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%; // 禁止文字自動調整大小(預設情況下旋轉設備的時候文字大小會發生變化)
  //-webkit-overflow-scrolling: touch;
  -webkit-font-smoothing: antialiased; // 字體抗鋸齒
  -moz-osx-font-smoothing: grayscale;
}
input, select, textarea {
  border: none;
  -webkit-appearance: none; // 清除內陰影
  -webkit-user-select: auto !important; // 否則ios下輸入框無法輸入
}
textarea {
  overflow: auto;
  resize: none;
}
h1, h2, h3, h4, h5, h6 {
  font-size: 100%;
  font-weight: normal;
}
address, caption, cite, code, dfn, th, var, i, em {
  font-style: normal;
}
abbr, acronym { // 去掉firefox下此元素的邊框
  border: none;
  font-variant: normal;
}

ul, ol {
  list-style: none;
}

del {
  text-decoration: line-through;
}
ins, a {
  text-decoration: none;
}
a, img {
  -webkit-touch-callout: none; // 禁用長按頁面時的彈出菜單(iOS下有效)
}
img {
  border: none;
  /*display: block;*/
  vertical-align: top;
}

table { // 去掉各table cell的邊距並讓其邊重合
  border-spacing: 0;
  border-collapse: collapse;
}

blockquote, q {
  quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
  content: '';
}

//統一上標和下標
sub, sup {
  position: relative;
  font-size: 75%;
  line-height: 0;
  vertical-align: baseline;
}
sup {
  top: -0.5em;
}
sub {
  bottom: -0.25em;
}

 

關於變數設置的_variables.scss

存放了一些可能會多次使用到的變數如:顏色、背景顏色、字體大小、尺寸、z-index

//color
$icon-color-default: #fff;
$icon-color: #ccc;
$link-active-color: #de181b;
$border-color: #e5e5e5;

//bgc
$bgc-theme: #f5f5f5;
$header-bgc: rgb(222, 24, 27);
$header-bgc-translucent: rgba(222, 24, 27, 0.9);
$modal-bgc: rgba(0, 0, 0, 0.4);

//font size
$font-size-base: 12px;
$font-size-l: $font-size-base + 2;
$icon-font-size-sm: 18px;
$icon-font-size: 24px;

//z-index
$navbar-z-index: 1000;
$tabbar-z-index: 1000;
$backtop-z-index: 1100;
$search-z-index: 1200;
$product-z-index: 1200;
$search-popup-z-index: $search-z-index + 10;
$category-popup-z-index: $search-z-index - 10;

//size
$navbar-height: 50px;
$tabbar-height: 50px;

 

_mixins.scss存放所有的mixin

@import "variables";

// flex-center
@mixin flex-center($direction: row) {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: $direction;
}

//ellipsis
@mixin ellipsis() {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

//multi line ellipsis 存在一定相容性
@mixin multiline-ellipsis($num: 2) {
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: $num;
  -webkit-box-orient: vertical;
  white-space: normal !important;
  word-wrap: break-word;
}

 

_base.scss 當前項目的基本樣式

@import "mixins";//mixin文件中引入了變數文件,因此這裡不需要再次引用

body, button, input, select, textarea {
  color: #5d656b;
  font-size: $font-size-base;
  //針對移動端設置的字體
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Helvetica Neue", STHeiti, "Microsoft Yahei", Tahoma, Simsun, sans-serif;
  line-height: 1;
}
body {
  background-color: #eee;
}
a {
  color: #686868;
  text-decoration: none;

  &:active {
    color: $link-active-color;
  }
}

html, body {
  overflow: hidden;
  width: 100%;
  height: 100%;
}

 

初始化項目:

修改根目錄下的index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
    <title>mall</title>
  </head>
  <body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

 

修改main.js,這個才是項目的主入口,而不是index.html

引入剛纔寫的index.scss樣式文件

 

 

再來安裝一些要用到的插件:

babel-polyfill 把ES6語法轉成低版本的

fastclick 解決移動端點擊300ms延遲的問題

cnpm install --save babel-polyfill fastclick

 

補充,我在vscode終端使用cnpm下載插件,報錯提示:

PS C:\Users\96579\mall> cnpm install --save babel-polyfill fastclick
cnpm : 無法載入文件 C:\Users\96579\AppData\Roaming\npm\cnpm.ps1,因為在此系統上禁止運行腳本。有關詳細信息,請參閱 https:/go.microsoft.com/fwlink/?LinkID=1
35170 中的 about_Execution_Policies。

然後嘗試cnpm -v,也是報錯:

 

 解決方法:

以管理員身份運行powershell
執行:get-ExecutionPolicy,顯示Restricted,表示狀態是禁止的
然後執行set-ExecutionPolicy RemoteSigned

輸入A Enter就解決了

 

 

安裝成功

 

 

修改main.js,引入剛纔下載的兩個模塊

 

 

接下來要安裝組件

cnpm install --save-dev node-sass [email protected]

node-sass 幫助vue識別scss文件

sass-loader  vue只識別js文件,幫助vue識別其他資源文件(版本號你可以自己選)

 

 

修改App.Vue 這是根組件

 

 

修改config--webpack.base.conf.js

給經常使用的一些文件路徑設置別名

 

 

修改router--index.js

 

 

現在查看頁面:

 

 

由於剛纔修改了webpack中的路徑別名,因此需要重啟下

ctrl+c 先退出

然後npm start

查看package.json可以看到start和npm run dev是一樣的

 

 

有時候vue會報大段大段的錯誤,通常是因為格式不正確

可能就是多了空格或者少了空格之類的,根據提示信息去修改就好了

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、為什麼要學習html5 a、2010年出(十分年輕) b、跨平臺運行(花心=.=) c、硬體要求低(這是不可能的,H5時代,開幾個網頁都占幾g記憶體→.→) d、flash之外的選擇(flash要漸漸退出歷史舞臺T.T,曾經的4399) 2、軟硬體環境 a、硬體:正常電腦都可以(滑稽) b、系統: ...
  • 1 完整代碼下載 https://pan.baidu.com/s/1JJyVcP2KqXsd5G6eaYpgHQ 提取碼 3fzt (壓縮包名: 2020-3-24-demo.zip) 2 圖片展示 3 主要代碼 1 "use strict" 2 3 ;(function (){ 4 5 //是否支 ...
  • 一、這一節講解的是背景圖片開始的位置也是可以設置的: background-orgin:數值值; 這裡的屬性值就是開始的位置,可分為: padding-left(預設);content-box;border-box <style> *{ margin:0; padding;0; } ul li{ l ...
  • 指令是以數據去驅動DOM行為,簡化DOM操作。常用指令如下 v-text innertext,不能解析文本中的html標簽 v-html innerhtml,可解析文本中的html標簽 v-show 控制元素的顯示、隱藏 v-if、v-else-if、v-else 滿足條件才顯示對應的元素 v-fo ...
  • 接上篇 https://www.cnblogs.com/chenyingying0/p/12608666.html 為什麼導航不使用fixed定位: 首先解釋下,手機端的頭部導航和底部導航,位置一般都是固定不變的 但是我們這裡不使用固定定位fixed,因為它在手機端的相容性並不好 我們可以設置總容器 ...
  • vue是國人開發的一個js框架,國人用得比較多。 Vue等框架與jQuery的區別 jQuery基於dom操作 Vue框架以數據驅動、組件化開發為核心 下載vue.js 如果安裝了node,執行命令 npm install vue 下載vue.js,可在vue後面加上 @版本號 指定要下載的vue. ...
  • 一、HTML 媒體(Media) 1.1HTML 多媒體 Web 上的多媒體指的是音效、音樂、視頻和動畫。 現代網路瀏覽器已支持很多多媒體格式。 1.2什麼是多媒體? 多媒體來自多種不同的格式。它可以是您聽到或看到的任何內容,文字、圖片、音樂、音效、錄音、電影、動畫等等。 在網際網路上,您會經常發現嵌 ...
  • 什麼是 XHTML?XHTML 是以 XML 格式編寫的 HTML。 XHTML 指的是可擴展超文本標記語言 XHTML 與 HTML 4.01 幾乎是相同的 XHTML 是更嚴格更純凈的 HTML 版本 XHTML 是以 XML 應用的方式定義的 HTML XHTML 是 2001 年 1 月發佈 ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...