1. 程式人生 > 其它 >java中String的一些常用方法

java中String的一些常用方法

webpack

webpacknodevue

1. 模組化

案例:

專案結構:


專案結構

info.js

/**
 * info.js 是用於演示各種資料資訊的js檔案
 */

//使用ES6語法規範匯出資料
export const name = '張三';
export const age = 18;
export const height = 18.88
;

mathUtils.js

/**
 * mathUtils.js 是提供各種數學計算方法的js檔案
 *
 */

/**
 * 計算兩個數的和
 * @param num1 加數1
 * @param num2 加數2
 * @returns {*} 和
 */
function add(num1,num2){
    return num1 + num2;
}


/**
 * 計算兩個數的乘積
 * @param num1 積數
 * @param num2 積數
 * @returns {number} 乘積
 */
function mul(num1,num2){
    return num1 * num2;
}

/**
 * 使用commonJs 方式匯出
 * @type {{add: (function(*, *): *), mul: (function(*, *): number)}}
 */
// module.exports = { // add,mul // } /** * 使用 ES6規範匯出 */ export {add,mul};

main.js


/**
 *  main.js是用來配置匯出的js檔案,所有的js匯出的工作,都是通過main.js來完成的
 */

//1. 使用commonJs的模組化規範 匯入
//const {add,mul} = require('./mathUtils.js');

//1. 使用ES6的模組化規範 匯入
import {add,mul} from './mathUtils.js';

//使用匯入的方法
let he = add(20,30);
console
.log('求和方法:',he); let ji = mul(20,30); console.log('求乘積方法:',ji); //2. 使用ES6的模組化的規範 匯入 import{name,age,height} from './info.js'; //使用匯入的資料 console.log(name); console.log(age); console.log(height);

index.html


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>01-webpack的起步</title>
</head>
<body>

<!--使用模組化的方式引用js檔案-->
<script src="./src/main.js" type="module"></script>
</body>
</html>

在瀏覽器執行index.html 結果:


執行結果

2. webPack的理解

從本質上來講,webpack是一個現代的JavaScript應用的靜態模組打包工具。


webpack的作用

前端模組化的一些方案: AMD、CMD、CommonJS、ES6。 其中 ES6的規範,瀏覽器是直接支援的,而其他的規範,我們需要利用打包工具,進行轉換之後,才能被瀏覽器所認識.

常用的打包工具:
grunt/gulp, webpack

  • 在ES6之前,我們要想進行模組化開發,就必須藉助於其他的工具,讓我們可以進行模組化開發。

  • 並且在通過模組化開發完成了專案後,還需要處理模組間的各種依賴,並且將其進行整合打包。

  • 而webpack其中一個核心就是讓我們可能進行模組化開發,並且會幫助我們處理模組間的依賴關係。

  • 而且不僅僅是JavaScript檔案,我們的CSS、圖片、json檔案等等在webpack中都可以被當做模組來使用(在後續我們會看到)。

  • 這就是webpack中模組化的概念。

    如何理解打包:

  • 理解了webpack可以幫助我們進行模組化,並且處理模組間的各種複雜關係後,打包的概念就非常好理解了。

  • 就是將webpack中的各種資源模組進行打包合併成一個或多個包(Bundle)。

  • 並且在打包的過程中,還可以對資源進行處理,比如壓縮圖片,將scss轉成css,將ES6語法轉成ES5語法,將TypeScript轉成 JavaScript等等操作。

  • 但是打包的操作似乎grunt/gulp也可以幫助我們完成,它們有什麼不同呢?

3. webpack的安裝

  • 安裝webpack首先需要安裝Node.js,Node.js自帶了軟體包管理工具npm

    • NodeJs下載地址: https://nodejs.org/en/download/
    • 檢視node版本: node -v
  • 全域性安裝webpack(這裡我先指定版本號3.6.0,因為vue cli2依賴該版本)

  • 區域性安裝webpack(後續才需要)

  • 為什麼全域性安裝後,還需要區域性安裝呢?

    • 在終端直接執行webpack命令,使用的全域性安裝的webpack
    • 當在package.json中定義了scripts時,其中包含了webpack命令,那麼使用的是區域性webpack

4. 使用webpack進行打包

dist → distribution 釋出

webpack 支援上述所有的模組化(ES6,common.js,....)的方式,它會在打包時,將這些模組化的打包方式,自動轉換成瀏覽器可識別的js的程式碼.

工程結構:


工程結構

webpack打包命令: webpack src/main.js dist/bundle.js 即:將指定資料夾下的檔案,打包到另一個指定資料夾下,併為其指定名稱.


執行打包命令

上述命令執行完成之後,會在 dist 資料夾下生成bundle.js的檔案,我們在 index.html檔案中,引用這個檔案即可.

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>01-webpack的起步</title>
</head>
<body>

<!--使用模組化的方式引用js檔案-->
<script src="./dist/bundle.js"></script>
</body>
</html>

執行index.html 執行結果如下:


執行結果

我們發現如果我們總是寫 webpack src/main.js dist/bundle.js 這樣的命令來,執行打包,操作很費勁,實際上,我們可以通過 配置的方式,來實現打包操作.

5. webpack的配置

我們需要在工程下建立一個名為webpack.config.js的檔案,這個檔案就是用來配置webpack的行為的檔案.

5-1. 打包配置

//通過commonjs的方式來匯入node中path包的功能
const path = require('path');

// 通過commonjs的方式來匯出配置
module.exports = {
    entry:'./src/main.js',   //打包入口
    output:{                 //打包出口
        path: path.resolve(__dirname,'dist'),             //路徑 (注意: path需要絕對路徑)
        filename:'bundle.js' //檔名
    }
}

path.resolve(); 方法的作用是拼接路徑. 可以理解成是C#中的Path.Combo()方法, __dirname可以獲取當前檔案所在的絕對路徑.

上面的程式碼中,我們需要引用nodeJs中的path包,那麼我們就需要注意,一旦專案中需要使用到node相關的東西,那麼我們就需要,在專案的路徑下對node進行初始化. 初始化命令: npm init


初始化node配置

在初始化命令執行結束之後,在工程下會出現一個名為 package.json的配置檔案,內容如下:

package.json

{
  "name": "meetwebpack",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

我們可以在package.json檔案中儲存的是,對webpack,依賴檔案的相關配置.

如果當前專案已經是一個完成的了的工程,但是本地沒有依賴檔案,那麼我們可以在當前工程的目錄下,執行npm install,來安裝此工程所需要的依賴檔案.

以上工作完成之後,我們就可以直接使用webpack命令來進行打包操作了.


打包執行過程

在已經使用npm管理的專案中,我們可以使用 npm run build 命令,來和webpack 命令,建立對應關係,以此來使用npm run build來進行打包工作,那麼我們應該如何配置呢? 我們需要在package.json檔案中,對這個操作進行配置.

package.json

{
  "name": "meetwebpack",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack"
  },
  "author": "",
  "license": "ISC"
}

我們在package.jsonscripts配置節中,新增 "build":"webpack" 的配置,就能使用 npm run build命令來對映執行webpack命令的打包操作.

package.json中配置的好處是,如果專案本地安裝了依賴,那麼使用npm命令時,優先使用的是本地配置依賴, 而如果直接在終端中使用webpack命令的話,使用的就是全域性的依賴了,

  • package.json中的scripts的指令碼在執行時,會按照一定的順序尋找命令對應的位置。
    • 首先,會尋找本地的node_modules/.bin路徑中對應的命令。
    • 如果沒有找到,會去全域性的環境變數中尋找。

為什麼說是有好處呢?

因為比如package.json中,專案配置需要依賴專案需要webpack版本是4.1.1才能進行打包,而全域性的webpack版本只有3.0.0,那麼在打包的時候,就會出錯,所以優先使用本地配置,是很重要的.

在本地安裝webpack的方法,就是在專案路徑下執行命令npm install [email protected] --save-dev安裝即可,這種在專案下安裝依賴的行為,我們稱之為開發時依賴. 向對應的在釋出後,我們也需要執行時依賴.

在命令執行完成之後,我們可以在package.json檔案中發現多瞭如下配置:

我們會發現webpack的配置,被放入到了devDependencies配置節下,表明此時的依賴,屬於開發時依賴.


開發時依賴

而執行時依賴,的配置會被配置到dependencies中.

安裝完webpack包之後,我們會發現我們的工程下多了一個名為node_modules的資料夾,我們所有的本地依賴,都會被放置在node_modules資料夾中.

6. 什麼是loader

  • loader是webpack中一個非常核心的概念。
  • webpack用來做什麼呢?
    • 在我們之前的例項中,我們主要是用webpack來處理我們寫的js程式碼,並且webpack會自動處理js之間相關的依賴。
    • 但是,在開發中我們不僅僅有基本的js程式碼處理,我們也需要載入css、圖片,也包括一些高階的將ES6轉成ES5程式碼,將TypeScript轉成ES5程式碼,將scss、less轉成css,將.jsx、.vue檔案轉成js檔案等等。
    • 對於webpack本身的能力來說,對於這些轉化是不支援的。
    • 那怎麼辦呢?給webpack擴充套件對應的loader就可以啦。
  • loader使用過程:
    • 步驟一:通過npm安裝需要使用的loader
    • 步驟二:在webpack.config.js中的modules關鍵字下進行配置
  • 大部分loader我們都可以在webpack的官網中找到,並且學習對應的用法。
    • 中文網地址 https://www.webpackjs.com/loaders/


webpack中文網

6-1. loader css檔案

最終工程結構:

工程結構圖

我們在工程下建立以下css檔案,最終的目的是,我們也需要將它通過webpack打包, 即把css檔案當成一個模組,也和其他js檔案一樣打包到 bundle.js
normal.css

body{
    background-color: pink;
}

所以我們需要先在main.js中,匯入此css檔案


依賴css檔案

此處如果我們打包就會遇到以下問題:


打包css檔案出錯

上面的圖片中,描述了為什麼我們打包css檔案出錯了,它是說,我們對css檔案進行打包時,沒有合適的打包依賴,,解決步驟:

  1. 根據webpack官網提供的css樣式依賴,進行安裝.(安裝完成之後,會在package.json檔案中出現相應的依賴配置資訊)
  2. 在webpack.config.js檔案中,對依賴,如何使用進行配置.webpack官網也會配置配置的例子.
  3. 再執行npm run build命令進行打包.


在webpack官網尋找依賴包

此處我們安裝css依來loader命令 npm install --save-dev [email protected]

在webpack.config.js中進行配置如下:

module: {
  rules: [
    {
      test: /\.css$/,
      use: [ 'style-loader', 'css-loader' ]
    }
  ]
}

此時我們還需要新增一個loader依賴, 因為css-loader只負責載入css樣式,並不負責css樣式的解析,如果我們想要讓css樣式生效,那麼我們還需要再安裝一個依賴.

此處我們安裝css解析依來loader命令 npm install [email protected] --save-dev

在webpack.config.js中進行配置如下:

module: {
      rules: [
          {
              test: /\.css$/,
              use: [
                  // css-loader只負責將css檔案進行載入
                  // style-loader負責將樣式新增到DOM中
                  // 使用多個loader時, 是從右向左
                  { loader: "style-loader" },
                  { loader: "css-loader" }
              ]
          }
      ]
  }

再使用 npm run build 命令打包即可.

6-2. 安裝less依賴

命令npm install --save-dev [email protected] [email protected]
配置:

{
              test: /\.less$/,
              use: [{
                  loader: "style-loader" // creates style nodes from JS strings
              }, {
                  loader: "css-loader" // translates CSS into CommonJS
              }, {
                  loader: "less-loader" // compiles Less to CSS
              }]
          }

6-3. 安裝圖片資源的依賴

命令npm install --save-dev [email protected]

webpack.config.js中的配置如下:

{
              test: /\.(png|jpg|gif|jpeg)$/,
              use: [
                  {
                      loader: 'url-loader',
                      options: {

                          //當檔案大小,小於limit的值時,會將圖片編譯成base64字串形式
                          //當檔案大小,大於limit的值時,則需要使用`file-loader`依賴
                          limit: 13000,
                          name: 'img/[name].[hash:8].[ext]' //指定檔名稱格式
                      }
                  }
              ]
}

file-loader 依賴安裝命令
命令: npm install --save-dev [email protected]

此時,我們在打包,之後執行發現沒有報錯,但是瀏覽器也不顯示背景圖,即,如果我們通過的是file-loader依賴,來載入的圖片,我們就需要將這個被依賴的圖片資源進行打包.

但是,我們在開發中依賴的圖片檔案在src中,但是釋出之後的圖片依賴,應該是在dist中,所以我們需要在這個地方進行干預一下,我們需要在webpack.config.js配置檔案的output節點中新增一個配置publicPath:"dist/",加了這個配置之後,以後凡是涉及到url的部分,都會在連結前面加上dist/,字首.