中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

公司網(wǎng)站建設(shè)后期維護下載微信

公司網(wǎng)站建設(shè)后期維護,下載微信,wordpress有點,python做網(wǎng)站還是java代碼共享方案 在我們通過模塊化的方式將代碼劃分成一個個小的結(jié)構(gòu)后,在以后的開發(fā)中我們就可以通過模塊化的方式來封裝自己的代碼,并且封裝成一個工具,這個工具我們可以讓同事通過導入的方式來使用,甚至你可以分享給世界各地的程…

代碼共享方案

在我們通過模塊化的方式將代碼劃分成一個個小的結(jié)構(gòu)后,在以后的開發(fā)中我們就可以通過模塊化的方式來封裝自己的代碼,并且封裝成一個工具,這個工具我們可以讓同事通過導入的方式來使用,甚至你可以分享給世界各地的程序員來使用。

這時候,有的人會考慮一個問題,如果我們分享給世界上所有的程序員使用,有哪些方式呢?

方式一:上傳到GitHub上、其他程序員通過GitHub下載我們的代碼手動的引用;

  • 缺點是大家必須知道你的代碼GitHub的地址,并且從GitHub上手動下載;
  • 需要在自己的項目中手動的引用,并且管理相關(guān)的依賴;
  • 不需要使用的時候,需要手動來刪除相關(guān)的依賴;
  • 當遇到版本升級或者切換時,需要重復上面的操作;

顯然,上面的方式是有效的,但是這種傳統(tǒng)的方式非常麻煩,并且容易出錯;

方式二:使用一個專業(yè)的工具來管理我們的代碼

  • 我們通過工具將代碼發(fā)布到特定的位置;
  • 其他程序員直接通過工具來安裝、升級、刪除我們的工具代碼;

顯然,通過第二種方式我們可以更好的管理自己的工具包,其他人也可以更好的使用我們的工具包。

包管理工具npm

這個我們都不陌生,用得最多的也就是這個:

  • Node Package Manager,也就是Node包管理器;
  • 但是目前已經(jīng)不僅僅是Node包管理器了,在前端項目中我們也在使用它來管理依賴的包;
  • 比如vue、vue-router、vuex、express、koa、react、react-dom、axios、babel、webpack等等;

如何下載npm工具呢?

  • npm屬于node的一個管理工具,所以我們需要先安裝Node;
  • node管理工具:https://nodejs.org/en/

npm管理的包可以在哪里查看、搜索呢?

  • https://www.npmjs.org/
  • 這是我們安裝相關(guān)的npm包的官網(wǎng);

npm管理的包存放在哪里呢?

  • 我們發(fā)布自己的包其實是發(fā)布到registry上面的;
  • 當我們安裝一個包時其實是從registry上面下載的包;

npm的配置文件

那么對于一個項目來說,我們?nèi)绾问褂胣pm來管理這么多包呢?

  • 事實上,我們每一個項目都會有一個對應的配置文件,無論是前端項目(Vue、React)還是后端項Node;
  • 這個配置文件會記錄著你項目的名稱、版本號、項目描述等;
  • 也會記錄著你項目所依賴的其他庫的信息和依賴庫的版本號;

這個配置文件就是package.json

那么這個配置文件如何得到呢?

  • 方式一:手動從零創(chuàng)建項目,npm init –y
  • 方式二:通過腳手架創(chuàng)建項目,腳手架會幫助我們生成package.json,并且里面有相關(guān)的配置

常見的配置文件

  • npm init #創(chuàng)建時填寫信息
  • npm init -y # 所有信息使用默認的

image.png

  • Vue CLI4創(chuàng)建的Vue3項目

image.png

  • create-react-app創(chuàng)建的react17項目

image.png

常見的屬性

必須填寫的屬性:name、version

  • name是項目的名稱;
  • version是當前項目的版本號;
  • description是描述信息,很多時候是作為項目的基本描述;
  • author是作者相關(guān)信息(發(fā)布時用到);
  • license是開源協(xié)議(發(fā)布時用到);

private屬性:

  • private屬性記錄當前的項目是否是私有的;
  • 當值為true時,npm是不能發(fā)布它的,這是防止私有項目或模塊發(fā)布出去的方式;

main屬性:

  • 設(shè)置程序的入口。
  • 很多人會有疑惑,webpack不是會自動找到程序的入口嗎?
  • 這個入口和webpack打包的入口并不沖突;
  • 它是在你發(fā)布一個模塊的時候會用到的;
  • 比如我們使用axios模塊 const axios = require(‘a(chǎn)xios’);
  • 實際上是找到對應的main屬性查找文件的;

scripts屬性

  • scripts屬性用于配置一些腳本命令,以鍵值對的形式存在;
  • 配置后我們可以通過 npm run 命令的key來執(zhí)行這個命令;
  • npm start和npm run start的區(qū)別是什么?
  • 它們是等價的;
  • 對于常用的 start、 test、stop、restart可以省略掉run直接通過 npm start等方式運行;

dependencies屬性

  • dependencies屬性是指定無論開發(fā)環(huán)境還是生成環(huán)境都需要依賴的包;
  • 通常是我們項目實際開發(fā)用到的一些庫模塊vue、vuex、vue-router、react、react-dom、axios等等;
  • 與之對應的是devDependencies;

devDependencies屬性

  • 一些包在生成環(huán)境是不需要的,比如webpack、babel等;
  • 這個時候我們會通過 npm install webpack --save-dev,將它安裝到devDependencies屬性中;

peerDependencies屬性

  • 還有一種項目依賴關(guān)系是對等依賴,也就是你依賴的一個包,它必須是以另外一個宿主包為前提的;
  • 比如element-plus是依賴于vue3的,ant design是依賴于react、react-dom;

engines屬性

  • engines屬性用于指定Node和NPM的版本號;
  • 在安裝的過程中,會先檢查對應的引擎版本,如果不符合就會報錯;
  • 事實上也可以指定所在的操作系統(tǒng) “os” : [ “darwin”, “l(fā)inux” ],只是很少用到;

browserslist屬性

  • 用于配置打包后的JavaScript瀏覽器的兼容情況,參考;
  • 否則我們需要手動的添加polyfills來讓支持某些語法;
  • 也就是說它是為webpack等打包工具服務的一個屬性;

依賴的版本管理

我們會發(fā)現(xiàn)安裝的依賴版本出現(xiàn):^2.0.3或~2.0.3,這是什么意思呢?

npm的包通常需要遵從semver版本規(guī)范:

  • semver:https://semver.org/lang/zh-CN/
  • npm semver:https://docs.npmjs.com/misc/semver

semver版本規(guī)范是X.Y.Z:

  • X主版本號(major):當你做了不兼容的 API 修改(可能不兼容之前的版本);
  • Y次版本號(minor):當你做了向下兼容的功能性新增(新功能增加,但是兼容之前的版本);
  • Z修訂號(patch):當你做了向下兼容的問題修正(沒有新功能,修復了之前版本的bug);

我們這里解釋一下 ^和~的區(qū)別:

  • ^x.y.z:表示x是保持不變的,y和z永遠安裝最新的版本;
  • ~x.y.z:表示x和y保持不變的,z永遠安裝最新的版本;

npm install 命令

安裝npm包分兩種情況:

  • 全局安裝(global install): npm install webpack -g;
  • 項目(局部)安裝(local install): npm install webpack

全局安裝

  • 全局安裝是直接將某個包安裝到全局
  • 比如yarn的全局安裝
npm install webpack -g

但是很多人對全局安裝有一些誤會:

  • 通常使用npm全局安裝的包都是一些工具包:yarn、webpack等;
  • 并不是類似于 axios、express、koa等庫文件;
  • 所以全局安裝了之后并不能讓我們在所有的項目中使用 axios等庫;

項目安裝

項目安裝會在當前目錄下生產(chǎn)一個 node_modules 文件夾,我們之前講解require查找順序時有講解過這個包在什么情況下被查找;

局部安裝分為開發(fā)時依賴和生產(chǎn)時依賴:

# 安裝開發(fā)和生產(chǎn)依賴
npm install axios
npm i axios
# 開發(fā)依賴
npm install webpack --save-dev
npm install webpack -D
npm i webpack –D # 根據(jù)package.json中的依賴包
npm install

npm install 原理

大家之前應該已經(jīng)會了 npm install ,但是你是否思考過它的內(nèi)部原理呢?

執(zhí)行 npm install它背后幫助我們完成了什么操作?
我們會發(fā)現(xiàn)還有一個成為package-lock.json的文件,它的作用是什么?
從npm5開始,npm支持緩存策略(來自yarn的壓力),緩存有什么作用呢?

這是一幅畫出的根據(jù) npm install 的原理圖:

image.png

npm install 原理圖解析

npm install會檢測是有package-lock.json文件:

沒有l(wèi)ock文件

分析依賴關(guān)系,這是因為我們可能包會依賴其他的包,并且多個包之間會產(chǎn)生相同依賴的情況;
從registry倉庫中下載壓縮包(如果我們設(shè)置了鏡像,那么會從鏡像服務器下載壓縮包);
獲取到壓縮包后會對壓縮包進行緩存(從npm5開始有的);
將壓縮包解壓到項目的node_modules文件夾中(前面我們講過,require的查找順序會在該包下面查找)

有l(wèi)ock文件

檢測lock中包的版本是否和package.json中一致(會按照semver版本規(guī)范檢測);
不一致,那么會重新構(gòu)建依賴關(guān)系,直接會走頂層的流程;
一致的情況下,會去優(yōu)先查找緩存
沒有找到,會從registry倉庫下載,直接走頂層流程;
查找到,會獲取緩存中的壓縮文件,并且將壓縮文件解壓到node_modules文件夾中;

package-lock.json

package-lock.json文件解析:

  • name:項目的名稱;
  • version:項目的版本;
  • lockfileVersion:lock文件的版本;
  • requires:使用requires來跟蹤模塊的依賴關(guān)系;
  • dependencies:項目的依賴
    • 當前項目依賴axios,但是axios依賴follow-redireacts;
    • axios中的屬性如下:
      • version表示實際安裝的axios的版本;
      • resolved用來記錄下載的地址,registry倉庫中的位置;
      • requires記錄當前模塊的依賴;
      • integrity用來從緩存中獲取索引,再通過索引去獲取壓縮包文件;

yarn工具

另一個node包管理工具yarn:

  • yarn是由Facebook、Google、Exponent 和 Tilde 聯(lián)合推出了一個新的 JS 包管理工具;
  • yarn 是為了彌補 npm 的一些缺陷而出現(xiàn)的;
  • 早期的npm存在很多的缺陷,比如安裝依賴速度很慢、版本依賴混亂等等一系列的問題;
  • 雖然從npm5版本開始,進行了很多的升級和改進,但是依然很多人喜歡使用yarn;

image.png

cnpm工具

由于一些特殊的原因,某些情況下我們沒辦法很好的從 https://registry.npmjs.org下載下來一些需要的包。

查看npm鏡像:npm config get registry

我們可以直接設(shè)置npm的鏡像:npm config set registry

但是對于大多數(shù)人來說(比如我),并不希望將npm鏡像修改了:

  • 第一,不太希望隨意修改npm原本從官方下來包的渠道;
  • 第二,擔心某天淘寶的鏡像掛了或者不維護了,又要改來改去;

這個時候,我們可以使用cnpm,并且將cnpm設(shè)置為淘寶的鏡像:

  • npm install -g cnpm --registry=https://registry.npm.taobao.org
  • cnpm config get registry # https://r.npm.taobao.org/

npx工具

npx是npm5.2之后自帶的一個命令。

npx的作用非常多,但是比較常見的是使用它來調(diào)用項目中的某個模塊的指令。

我們以webpack為例:

全局安裝的是webpack5.1.3
項目安裝的是webpack3.6.0

如果我在終端執(zhí)行 webpack --version使用的是哪一個命令呢?

顯示結(jié)果會是 webpack 5.1.3,事實上使用的是全局的,為什么呢?
原因非常簡單,在當前目錄下找不到webpack時,就會去全局找,并且執(zhí)行命令;
如何解決這個問題呢?

那么如何使用項目(局部)的webpack,常見的是一下幾種方式:

  • 方式一:明確查找到node_module下面的webpack—./node_modules/.bin/webpack --version
  • 方式二:在 scripts定義腳本,來執(zhí)行webpack; “scripts”: {“webpack”: “webpack --version”}
  • 方式三:使用npx---->>>npx webpack --version

npm發(fā)布自己的包

注冊npm賬號:

  • https://www.npmjs.com/
  • 選擇sign up

在命令行登錄:npm login

修改package.json

發(fā)布到npm registry上

更新倉庫:

  • 1.修改版本號(最好符合semver規(guī)范)
  • 2.重新發(fā)布
http://www.risenshineclean.com/news/6174.html

相關(guān)文章:

  • 安徽人防工程建設(shè)網(wǎng)站廣告接單平臺app
  • 如何做網(wǎng)站搜索排名百度指數(shù)分析平臺
  • 網(wǎng)站設(shè)計的總結(jié)google seo優(yōu)化
  • 織夢網(wǎng)站可以微信登錄嗎友情鏈接什么意思
  • 微信做公司網(wǎng)站怎么做廣州seo網(wǎng)站推廣平臺
  • 團隊如何分工做網(wǎng)站本周新聞熱點10條
  • 東莞市建設(shè)工程網(wǎng)站網(wǎng)址收錄入口
  • 互聯(lián)網(wǎng)優(yōu)化營銷深圳網(wǎng)站優(yōu)化推廣
  • 軟文推廣收費南京關(guān)鍵詞seo公司
  • wordpress 前臺發(fā)布西安seo教程
  • 白城網(wǎng)站建設(shè)seo技術(shù)培訓江門
  • 網(wǎng)站里彈窗怎么做黃頁推廣2021
  • 營銷型網(wǎng)站建設(shè)多少錢中國十大網(wǎng)站排名
  • 邢臺易優(yōu)網(wǎng)絡(luò)科技有限公司seo網(wǎng)站排名的軟件
  • 江蘇百城建設(shè)有限公司官方網(wǎng)站seo站長工具查詢系統(tǒng)
  • 怎么建設(shè)自己的卡盟網(wǎng)站2345瀏覽器網(wǎng)頁版
  • 上海seo服務朝陽seo
  • 北京 做網(wǎng)站百度一下首頁官網(wǎng)百度
  • 杭州網(wǎng)站建設(shè)公司seo課程多少錢
  • wordpress發(fā)布文章禁用谷歌字體seo關(guān)鍵詞優(yōu)化軟件怎么樣
  • 一家裝修的網(wǎng)站怎么做一鍵優(yōu)化表格
  • 做網(wǎng)站用lunx鏈接交換公司
  • 東莞企業(yè)建站平臺百度官方入口
  • 做的網(wǎng)站怎么放到域名北京搜索引擎優(yōu)化
  • 教育在線網(wǎng)站怎樣做直播百度推廣網(wǎng)站平臺
  • 建網(wǎng)站衡水哪家強?做網(wǎng)站哪家好
  • 贛州市城鄉(xiāng)建設(shè)局官方網(wǎng)站風云榜百度
  • 代做網(wǎng)站的公司寫軟文用什么軟件
  • 做網(wǎng)站寫的代號好跟不好的區(qū)別app推廣賺錢
  • b s模式的網(wǎng)站開發(fā)營銷和銷售的區(qū)別在哪里