rollup.js(入門篇)

前沿?

Rollup 是一個用于 JavaScript 的模塊打包工具,它將小的代碼片段編譯成更大、更復雜的代碼,例如庫或應用程序。它使用 JavaScript 的 ES6 版本中包含的新標準化代碼模塊格式,而不是以前的 CommonJS 和 AMD 等特殊解決方案。ES 模塊允許你自由無縫地組合你最喜歡的庫中最有用的個別函數。這在未來將在所有場景原生支持,但 Rollup 讓你今天就可以開始這樣做。

目錄

前沿?

1、安裝

2、準備工作

3、快速開始

4、除屑優化(Tree-Shaking)?

5、配置文件?

6、導入 package.json

7、使用插件

1、安裝依賴

2、更新main.js入口文件?

3、使用@rollup/plugin-json插件?

4、執行編譯

8、使用輸出插件(壓縮)

1、安裝依賴

2、使用@rollup/plugin-terser插件

3、執行編譯

9、構建


1、安裝

使用 npm 全局安裝?rollup.js

$ npm install --global rollup
added 3 packages in 12s

安裝完畢,node安裝目錄(D:\AppData\nodejs)會生產出來這三個文件

?

輸入 rollup --help 可以查看當前rollup版本信息和其他選項操作

$ rollup --helprollup version 4.18.0
=====================================Usage: rollup [options] <entry file>Basic options:-c, --config <filename>     使用此配置文件(如果使用參數但未指定值,則默認為 rollup.config.js)
-d, --dir <dirname>         用于塊的目錄(如果不存在,則打印到 stdout)
-e, --external <ids>        排除模塊 ID 的逗號分隔列表
-f, --format <format>       輸出類型(amd、cjs、es、iife、umd、system)
-g, --globals <pairs>       `moduleID:Global` 對的逗號分隔列表
-h, --help                  顯示此幫助消息
-i, --input <filename>      輸入(替代 <entry file>)
-m, --sourcemap             生成源映射(`-m inline` 為內聯映射)
-n, --name <name>           UMD 導出的名稱
-o, --file <output>         單個輸出文件(如果不存在,則打印到 stdout)
-p, --plugin <plugin>       使用指定的插件(可重復)
-v, --version               顯示版本號
-w, --watch                 監視產物文件并在更改時重新構建
--amd.autoId                基于塊名稱生成 AMD ID
--amd.basePath <prefix>     要預先添加到自動生成的 AMD ID 的路徑
--amd.define <name>         在 `define` 位置使用的函數
--amd.forceJsExtensionForImports 在 AMD 導入中使用 `.js` 擴展名
--amd.id <id>               AMD 模塊的 ID(默認為匿名)
--assetFileNames <pattern>  發布資源的名稱模式
--banner <text>             在產物頂部插入的代碼(位于包裝器之外)
--chunkFileNames <pattern>  發布次要塊的名稱模式
--compact                   縮小包裝器代碼
--context <variable>        指定頂級 `this` 值
--no-dynamicImportInCjs     將外部動態 CommonJS 導入編寫為 require
--entryFileNames <pattern>  發布入口塊的名稱模式
--environment <values>      傳遞給配置文件的設置(請參閱示例)
--no-esModule               不添加 __esModule 屬性
--exports <mode>            指定導出模式(auto、default、named、none)
--extend                    擴展由 --name 定義的全局變量
--no-externalImportAttributes 在 "es" 格式輸出中省略導入屬性
--no-externalLiveBindings   不生成支持實時綁定的代碼
--failAfterWarnings         如果生成的構建產生警告,則退出并顯示錯誤
--filterLogs <filter>       過濾日志信息
--footer <text>             在產物底部插入的代碼(位于包裝器之外)
--forceExit                 當任務完成后,強制結束進程
--no-freeze                 不凍結命名空間對象
--generatedCode <preset>    使用哪些代碼特性(es5/es2015)
--generatedCode.arrowFunctions 在生成的代碼中使用箭頭函數
--generatedCode.constBindings 在生成的代碼中使用 "const"
--generatedCode.objectShorthand 在生成的代碼中使用簡寫屬性
--no-generatedCode.reservedNamesAsProps 始終引用保留名稱作為 props
--generatedCode.symbols     在生成的代碼中使用符號
--hashCharacters <name>     使用指定的字符集來生成文件的哈希值
--no-hoistTransitiveImports 不將中轉導入提升到入口塊中
--importAttributesKey <name> 使用特定的關鍵詞作為導入屬性
--no-indent                 不縮進結果
--inlineDynamicImports      使用動態導入時創建單次打包
--no-interop                不包括交互操作塊
--intro <text>              在產物頂部插入的代碼(位于包裝器內部)
--logLevel <level>          要顯示哪種類型的日志
--no-makeAbsoluteExternalsRelative 不規范化外部導入
--maxParallelFileOps <value> 并行讀取的文件數
--minifyInternalExports     強制或禁用內部導出的縮小
--noConflict                為 UMD 全局生成 noConflict 方法
--outro <text>              在產物底部插入的代碼(位于包裝器內部)
--perf                      顯示性能計時
--no-preserveEntrySignatures 避免入口點的門面塊
--preserveModules           保留模塊結構
--preserveModulesRoot       將保留的模塊放置在根路徑下的此路徑下
--preserveSymlinks          解析文件時不要跟隨符號鏈接
--no-reexportProtoFromExternal 在使用重新導出星號('*')時,忽略 __proto__
--no-sanitizeFileName       不要替換文件名中的無效字符
--shimMissingExports        為丟失的導出創建卡扣變量
--silent                    不打印警告
--sourcemapBaseUrl <url>    使用給定的基本 URL 發出絕對源映射 URL
--sourcemapExcludeSources   在源映射中不包括源代碼
--sourcemapFile <file>      指定源映射的包位置
--sourcemapFileNames <pattern> 編譯后 sourcemap 的命名模式
--stdin=ext                 指定用于標準輸入的文件擴展名
--no-stdin                  不要從 stdin 讀取 "-"
--no-strict                 不在生成的模塊中發出 `"use strict";`
--strictDeprecations        拋出有關不推薦使用的功能的錯誤
--no-systemNullSetters      不要將空的 SystemJS setter 替換為 `null`
--no-treeshake              禁用除屑優化
--no-treeshake.annotations 忽略純調用注釋
--treeshake.correctVarValueBeforeDeclaration 在聲明之前將變量取消優化
--treeshake.manualPureFunctions <names> 手動將函數聲明為純函數
--no-treeshake.moduleSideEffects 假設模塊沒有副作用
--no-treeshake.propertyReadSideEffects 忽略屬性訪問副作用
--no-treeshake.tryCatchDeoptimization 不要關閉 try-catch-tree-shaking
--no-treeshake.unknownGlobalSideEffects 假設未知的全局變量不會拋出異常
--validate                  驗證輸出
--waitForBundleInput        等待打包輸入文件
--watch.buildDelay <number> 節流觀察重建
--no-watch.clearScreen      重建時不要清除屏幕
--watch.exclude <files>     排除要觀察的文件
--watch.include <files>     限制觀察到指定文件
--watch.onBundleEnd <cmd>   在 "BUNDLE_END" 事件上運行的 Shell 命令
--watch.onBundleStart <cmd> 在 "BUNDLE_START" 事件上運行的 Shell 命令
--watch.onEnd <cmd>         在 "END" 事件上運行的 Shell 命令
--watch.onError <cmd>       在 "ERROR" 事件上運行的 Shell 命令
--watch.onStart <cmd>       在 "START" 事件上運行的 Shell 命令
--watch.skipWrite           在監視時不要將文件寫入磁盤Examples:# use settings in config file
rollup -c# in config file, process.env.INCLUDE_DEPS === 'true'
# and process.env.BUILD === 'production'
rollup -c --environment INCLUDE_DEPS,BUILD:production# create CommonJS bundle.js from src/main.js
rollup --format=cjs --file=bundle.js -- src/main.js# create self-executing IIFE using `window.jQuery`
# and `window._` as external globals
rollup -f iife --globals jquery:jQuery,lodash:_ \-i src/app.js -o build/app.js -m build/app.js.mapNotes:* When piping to stdout, only inline sourcemaps are permittedFor more information visit https://rollupjs.org

2、準備工作

  • 創建一個簡單的項目
mkdir -p Rollup
cd Rollup

  • 創建入口文件main.js
# main.js
function test() {const d = new Date();console.log(d.getFullYear(), d.getMonth())
}
export default test();

3、快速開始

可以通過帶有可選配置文件的 命令行界面JavaScript API 來使用 Rollup。

這些命令假定你的應用程序入口點命名為 main.js,并且希望將所有導入編譯到一個名為 bundle.js 的單個文件中。
?

  • 對于瀏覽器
# 編譯為包含自執行函數('iife')的 <script>。
rollup main.js --file bundle.js --format iife

執行效果:

  • 對于 Node.js
# 編譯為一個 CommonJS 模塊 ('cjs')
rollup main.js --file bundle.js --format cjs

執行效果:

  • 對于瀏覽器和 Node.js
# UMD 格式需要一個包名
rollup main.js --file bundle.js --format umd --name "myBundle"

執行效果:

?

4、除屑優化(Tree-Shaking)?

除了可以使用 ES 模塊之外,Rollup 還可以靜態分析你導入的代碼,并將排除任何實際上沒有使用的內容。這使你可以在現有的工具和模塊的基礎上構建,而不需要添加額外的依賴項或使項目的大小變得臃腫。

例如,使用 CommonJS 必須導入整個工具或庫。

// 使用 CommonJS 導入整個 utils 對象
const utils = require('./utils');
const query = 'Rollup';
// 使用 utils 對象的 ajax 方法。
utils.ajax(`https://api.example.com?search=${query}`).then(handleResponse);

使用 ES 模塊,我們不需要導入整個 utils 對象,而只需導入我們需要的一個 ajax 函數:

// 使用 ES6 的 import 語句導入 ajax 函數。
import { ajax } from './utils';
const query = 'Rollup';
// 調用 ajax 函數
ajax(`https://api.example.com?search=${query}`).then(handleResponse);

因為 Rollup 只包含最少的內容,因此它生成的庫和應用程序更輕、更快、更簡單。由于這種方法可以利用顯式的 import export 語句,因此它比僅運行最小化混淆工具更能有效檢測出已編譯輸出代碼中的未使用變量。

示例

這里更新了目錄結構,執行以下命令將 main.js 編譯為一個 es 模塊

1、創建src文件夾將main.js移入,創建output文件夾為打包bundle.js做存儲。

# 執行命令
rollup ./src/main.js --file ./output/bundle.js --format es

我們新增了一個 notCast 函數,但main.jstest函數并未使用它,output/bundle.js并未為其編譯

我們新增了一個 notCast 函數,將其引入到test函數中使用,編譯后發現已經編譯并使用

?

5、配置文件?

Rollup 配置文件是可選的,但它們非常強大和方便,因此推薦使用。配置文件是一個 ES 模塊,它導出一個默認對象,其中包含所需的選項:

# rollup.config.mjs
export default {input: 'src/main.js',output: {file: 'bundle.js',format: 'es'}
};

通常,它被稱為 rollup.config.jsrollup.config.mjs,并位于項目的根目錄中。

如果你想使用 require module.exports 編寫 CommonJS 模塊的配置文件,你應該將文件擴展名更改為 .cjs

要使用配置文件來運行 Rollup,請傳遞 --config-c 標志:

# 向 Rollup 傳遞自定義配置文件位置
rollup --config my.config.js# 如果你沒有傳遞文件名,Rollup 將會嘗試
# 按照以下順序加載配置文件:
# rollup.config.mjs -> rollup.config.cjs -> rollup.config.js
rollup --config

執行效果

?

6、導入 package.json

導入你的 package 文件可能很有用,例如自動將你的依賴項標記為 “external”。

在 Rollup 中,可以通過 external 選項來指定哪些模塊應該被視為外部依賴。這些模塊不會被打包進最終的構建文件中,而是會被認為是已經存在于運行環境中的模塊,例如在瀏覽器端通過 script 標簽引入的第三方庫或者在 Node.js 中通過 require 引入的內置模塊。

external 選項有兩個作用:

  1. 減小打包后文件的體積:如果某個模塊被指定為外部依賴,那么它不會被打包進最終的構建文件中,這樣可以減小打包后文件的體積,優化加載速度和性能。
  2. 避免重復打包:如果多個模塊都引用了同一個外部依賴,而且每個模塊都把這個依賴打包進了自己的構建文件中,那么就會造成代碼冗余和重復打包的問題。通過 external 選項,我們可以把這個外部依賴從多個模塊中剔除出來,只在最終的構建文件中打包一次,避免了代碼冗余和重復打包的問題。

在實際應用中,external 選項特別適用于打包一些常用的第三方庫或者框架,例如 React、Vue、Lodash 等,這些庫通常已經被廣泛使用,并且已經存在于用戶的瀏覽器或者 Node.js 環境中,所以沒有必要再把它們打包進構建文件中。

構建package.json

$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.See `npm help init` for definitive documentation on these fields
and exactly what they do.Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.Press ^C at any time to quit.
package name: (rollup)
version: (1.0.0)
description: rollup test unit
entry point: (index.js) src/main.js
test command:
git repository:
keywords:
author: vinca
license: (ISC)
About to write to D:\vinca\Rollup\package.json:{"name": "rollup","version": "1.0.0","description": "rollup test unit","main": "src/main.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"author": "vinca","license": "ISC"
}Is this OK? (yes)

安裝一下vue3依賴,為后續引入package.json?排除vue模塊做鋪墊

$ npm install vueadded 20 packages, and audited 21 packages in 15s3 packages are looking for fundingrun `npm fund` for detailsfound 0 vulnerabilities

完善你的rollup.config.mjs文件內容?

import { createRequire } from 'node:module';
const require = createRequire(import.meta.url);
const pkg = require('./package.json');
console.log(pkg)const config = {input: 'src/main.js',output: {file: 'output/bundle.js',format: 'es'},external: Object.keys(pkg.dependencies)}
export default config

輸出日志說明:?

# pkg
{name: 'rollup',version: '1.0.0',description: 'rollup test unit',main: 'src/main.js',scripts: { test: 'echo "Error: no test specified" && exit 1' },author: 'vinca',license: 'ISC',dependencies: { vue: '^3.4.27' }
}# Object.keys(pkg.dependencies)
[ 'vue' ]

?

7、使用插件

可以看到第六點是使用createRequire方式使用package.json文件,那么現在我們準備將其優化

1、安裝依賴

將 @rollup/plugin-json 安裝到開發依賴中:

npm install --save-dev @rollup/plugin-json

我們使用 --save-dev 而不是 --save,因為我們的代碼在運行時實際上不依賴于插件,只有在打包時才需要。

2、更新main.js入口文件?

# main.js
import { version } from '../package.json';export default function () {console.log('version ' + version);
}

3、使用@rollup/plugin-json插件?

# rollup.config.mjs
import json from '@rollup/plugin-json';
import pkg from './package.json' assert { type: 'json' };
console.log(pkg)
const config = {input: 'src/main.js',output: {file: 'output/bundle.js',format: 'es'},plugins: [json()],external: Object.keys(pkg.dependencies)}
export default config

4、執行編譯

rollup -c

如果rollup.config.mjs不添加plugins: [json()]插件會出現編譯錯誤(無法識別json文件)?

# bundle.js
var version = "1.0.0";function main () {console.log('version ' + version);
}export { main as default };

【注意】結果中只導入了我們實際需要的數據 ——version?;package.json 中其他內容都被忽略了。這就是 除屑優化 的作用。

8、使用輸出插件(壓縮)

讓我們擴展上一個示例,生產一個壓縮文件和一個不壓縮文件。

1、安裝依賴

npm install --save-dev @rollup/plugin-terser

完成后,你的package.json > devDependencies 模塊,將是這樣的:

# package.json
"devDependencies": {"@rollup/plugin-json": "^6.1.0","@rollup/plugin-terser": "^0.4.4"
}

?

2、使用@rollup/plugin-terser插件

更新你的rollup.config文件,內容如下:

# rollup.config.mjs
import json from '@rollup/plugin-json';
import terser from '@rollup/plugin-terser';
import pkg from './package.json' assert { type: 'json' };
console.log(pkg)
const config = {input: 'src/main.js',output: [{file: 'output/bundle.js',format: 'es'},{file: 'output/bundle.min.js',format: 'iife',name: 'version',plugins: [terser()]}],plugins: [json()],external: Object.keys(pkg.dependencies)}
export default config

?

3、執行編譯

在終端編譯 rollup -c? 命令后,將產生一個壓縮文件bundle.min.js和一個非壓縮文件bundle.js

9、構建

在你的 package.json 中加入構建命令

# package.json
{"scripts": {"build": "rollup -c"}
}

執行操作

或通過命令行模式,執行 npm run build

$ npm run build> rollup@1.0.0 build
> rollup -csrc/main.js → output/bundle.js...
created output/bundle.js in 52ms

效果和上面執行rollup命令(rollup -c)一樣,這樣會在output目錄產生bundle.js文件

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

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

相關文章

如何在Python中處理時間和日期

在Python中處理時間和日期&#xff0c;我們通常使用內置的datetime模塊。這個模塊提供了類來操作日期和時間&#xff0c;包括date、time、datetime、timedelta以及tzinfo。以下是datetime模塊的一些基本用法&#xff1a; 1. 獲取當前日期和時間 python復制代碼 from datetime…

Linux編程for、while循環if判斷以及case語句用法

簡介 語法描述if條件語句if else條件判斷語句if else-if else多條件判斷語句for循環執行命令while循環執行命令until直到條件為真時停止循環case ... esac多選擇語句break跳出循環continue跳出當前循環 1. for 循環 for語句&#xff0c;定量循環&#xff0c;可以遍歷一個列表…

一文讀懂AI時代GPU的內存新寵-HBM

一文讀懂GPU最強輔助&#xff1a;HBM HBM&#xff0c;即高帶寬內存&#xff0c;是一項領先的3D堆疊DRAM技術&#xff0c;專為高性能計算和圖形處理單元&#xff08;GPU&#xff09;設計&#xff0c;滿足其對內存帶寬和容量的極致需求。該技術由AMD與海力士攜手研發&#xff0c;…

Apache安裝教程

目錄 一、Apache知識點 Apache服務簡介 Apache下載網址 Apache的主要特點 二、Apache服務的搭建 1. 關閉防火墻 2. 安裝依賴環境以及編譯工具 3. 將apache安裝包拖入xshell內 4. 解壓壓縮包 5. 進入httpd主包 6. 指定安裝路徑&#xff0c;啟用字符集支持等 7. 優化執…

重慶工商大學社會工作專業試題及答案,分享幾個實用搜題和學習工具 #媒體#學習方法#知識分享

搜題軟件一般都是通過識別題目內容搜索出問題的答案&#xff0c;當識別內容不正確或搜索不到答案時&#xff0c;又得重新到其他軟件進行重復的操作&#xff0c;很是麻煩。所以我們可以使用專業的識別工具&#xff0c;對題目內容進行識別&#xff0c;然后把提取出來的內容單獨保…

流量錄制學習

AREX Cloud | AREX (arextest.com) 流量錄制學習&#xff0c;比vivo的moonbox要好用

android 異屏同顯二.

android主屏: android副屏 | | mediaProjection ----SufaceTextrue ---Open…

【數據結構】平衡二叉樹左旋右旋與紅黑樹

平衡二叉樹左旋右旋與紅黑樹 平衡二叉樹 定義 平衡二叉樹是二叉搜索樹的一種特殊形式。二叉搜索樹&#xff08;Binary Search Tree&#xff0c;BST&#xff09;是一種具有以下性質的二叉樹&#xff1a; 對于樹中的每個節點&#xff0c;其左子樹中的所有節點都小于該節點的值…

【vector模擬實現】附加代碼講解

vector模擬實現 一、看源代碼簡單實現1. push_backcapacity&#xff08;容量&#xff09;sizereserve&#xff08;擴容&#xff09;operator[ ] &#xff08;元素訪問&#xff09; 2. pop_back3. itorator&#xff08;迭代器&#xff09;4.insert & erase &#xff08;頭插…

哈夫曼樹的創建

要了解哈夫曼樹&#xff0c;可以先了解一下哈夫曼編碼&#xff0c;假設我們有幾個字母&#xff0c;他們的出現頻率是A: 1 B: 2 C: 3 D: 4 E: 5 F: 6 G: 7。那么如果想要壓縮數據的同時讓訪問更加快捷&#xff0c;就要讓頻率高的字母離根節點比較進&#xff0c;容易訪問&#xf…

立創·天空星開發板-GD32F407VE-GPIO

本文以 立創天空星開發板-GD32F407VET6-青春版 作為學習的板子&#xff0c;記錄學習筆記。 立創天空星開發板-GD32F407VE-GPIO 基礎概念三極管MOS管 GPIO輸出模式輸出線與GPIO輸入模式GPIO點燈 基礎概念 GPIO&#xff0c;全稱為“通用輸入/輸出”&#xff08;General Purpose …

算法金 | 這次終于能把張量(Tensor)搞清楚了!

大俠幸會&#xff0c;在下全網同名[算法金] 0 基礎轉 AI 上岸&#xff0c;多個算法賽 Top [日更萬日&#xff0c;讓更多人享受智能樂趣] 1. 張量&#xff08;Tensor&#xff09;基礎概念 1.1 張量的定義與重要性 張量是深度學習中用于表示數據的核心結構&#xff0c;它可以視…

《帝國時代 III:決定版》秘籍 怎么在蘋果電腦上玩《帝國時代 III:決定版》

《帝國時代 III&#xff1a;決定版》是一款讓玩家沉浸于歷史長河體驗從大航海時代到工業革命時期的游戲。下面我們來看看《帝國時代 III&#xff1a;決定版》是什么類型的游戲&#xff0c;《帝國時代 III&#xff1a;決定版》Mac安裝教程的相關內容。 一、《帝國時代 III&…

【BOM02】本地存儲

一&#xff1a;什么是本地存儲 數據存儲在用戶瀏覽器中&#xff0c;用戶設置、讀取方便&#xff0c;同時頁面刷新時不會丟失數據。存儲在瀏覽器中數據約5M&#xff0c;分為sessionStorage和localStorage兩種存儲方式 二&#xff1a;localStorage存儲 作用 將數據永久存儲在…

opencv實戰小結-銀行卡號識別

實戰1-銀行卡號識別 項目來源&#xff1a;opencv入門 項目目的&#xff1a;識別傳入的銀行卡照片中的卡號 難點&#xff1a;銀行卡上會有一些干擾項&#xff0c;如何排除這些干擾項&#xff0c;并且打印正確的號碼是一個問題 最終效果如上圖 實現這樣的功能需要以下幾個步驟…

基于Amazon Linux使用pip安裝certbot并使用Apache配置證書的完整步驟

配置證書 1. 更新系統和安裝必要的軟件包 首先&#xff0c;確保系統和包管理器是最新的&#xff1a; sudo dnf update -y sudo dnf install -y python3 python3-pip python3-virtualenv httpd mod_ssl2. 創建并激活虛擬環境 為了避免依賴沖突&#xff0c;使用virtualenv創建…

算法導論實戰(三)(算法導論習題第二十四章)

&#x1f308; 個人主頁&#xff1a;十二月的貓-CSDN博客 &#x1f525; 系列專欄&#xff1a; &#x1f3c0;算法啟示錄 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻擋不了春天的腳步&#xff0c;十二點的黑夜遮蔽不住黎明的曙光 目錄 前言 第二十四章 24.1-3 24.1-4 2…

筆記:DST與HPPC測試方法

一、DST測試方法&#xff1a; DST全稱為Dynamic Stress Test,是一種動態壓力測試方法&#xff0c;主要用于評估電池在實際使用條件下的綜合性能&#xff0c;模擬了車輛在行駛過程中可能會遇到的各種動態負載變化&#xff0c;如加速、減速、怠速等工況。 它的目的是評估電池在…

setattr前端接收方法深度解析

setattr前端接收方法深度解析 在前端開發中&#xff0c;setattr可能是一個較為陌生的概念&#xff0c;但它卻在某些場景下扮演著關鍵角色。setattr是一個Python內置函數&#xff0c;用于設置對象屬性的值。然而&#xff0c;在前端與后端交互的過程中&#xff0c;我們有時需要處…

【Week-R2】使用LSTM實現火災預測(tf版本)

【Week-R2】使用LSTM實現火災預測&#xff08;tf版本&#xff09; 一、 前期準備1.1 設置GPU1.2 導入數據1.3 數據可視化 二、數據預處理(構建數據集)2.1 設置x、y2.2 歸一化2.3 劃分數據集 三、模型創建、編譯、訓練、得到訓練結果3.1 構建模型3.2 編譯模型3.3 訓練模型3.4 模…