52.[前端開發-JS實戰框架應用]Day03-AJAX-插件開發-備課項目實戰-Lodash

常用JavaScript庫

1 認識前端工具庫

前端工具類庫

2 Lodash vs underscore

underscore庫 VS Lodash庫

Lodash庫 的安裝

手寫精簡版的Lodash

;(function(g) {function Lodash() {}// 添加類方法Lodash.VERSION = '1.0.0'Lodash.join = function(arr, separater) {// todo ......return arr.join(separater)}// ....Lodash.debounce = function() {}Lodash.throttle = function() {}Lodash.random = function() {}Lodash.endsWith = function() {}Lodash.clone = function() {}Lodash.cloneDeep = function() {}Lodash.merge = function() {}g._ = Lodash
})(window)

Lodash庫字符串、數組

String

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script src="./libs/lodash-4.17.21.js"></script><script>// 1.將字符串轉成 駝峰命名console.log( _.camelCase(' foo bar  ')  )console.log( _.camelCase('--foo-bar--')  )console.log( _.capitalize('foo bar') )console.log(_.endsWith('logo.jpeg', '.png') )console.log(_.padStart('9', 2, '0'))   // 1 -> 01</script>
</body>
</html>

number

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script src="./libs/lodash-4.17.21.js"></script><script>// 1.獲取隨機數console.log( _.random(5)  )  // 0-5console.log( _.random(5, 10)  )  // 5 - 10</script>
</body>
</html>

array

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script src="./libs/lodash-4.17.21.js"></script><script>var obj = {}var colors = ['red', 'red', obj, obj,  'green', 'blue', ['orange', 'pink'] ]// 1.數組去重// console.log( _.uniq(colors) )// 2.扁平化// console.log( _.flatten(colors) )// 2.去除數組中假的值console.log( _.compact( [1, 2, {}, '', 0, null, undefined, false, 'red'] ) )</script>
</body>
</html>

Lodash庫對象、集合、函數

object

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script src="./libs/lodash-4.17.21.js"></script><script>var user = {name: 'liujun',age: '17',height: '1.66',friends: ['Evan','John','Mark','Jack','David']}// console.log( _.pick(user, ['name', 'friends']) )// console.log( _.omit(user, ['name', 'friends']) )// console.log( _.clone(user) )console.log( _.cloneDeep(user) )  // 深拷貝</script>
</body>
</html>

3 Day.js vs Mement

Moment.js庫 VS Day.js庫

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><!-- window.dayjs = 工廠函數--><script src="./libs/dayjs.js"></script><script>// console.log("%O", dayjs)console.log("%O", dayjs()) // 創建 dayjs 對象console.log(dayjs().format()) // 拿到當前的時間</script></body>
</html>

Day.js庫安裝

手寫DAY.js

;(function (g){// browser -> window 全局對象// node -> global 全局對象// globalThis -> ES11g = typeof globalThis !== 'undefined' ? globalThis : g || self// 構造函數function Dayjs() {var date = new Date()this.$Y = date.getFullYear()this.$M = date.getMonth()this.$D = date.getDate()}// 原型上的方法Dayjs.prototype.format = function() {return `${this.$Y}-${ (this.$M + 1) }-${this.$D}`}// 學習原型的上的方法// ......原型的方法// ......原型的方法// ......原型的方法// ......原型的方法// ......原型的方法// ......原型的方法// ......原型的方法// 工廠函數function dayjs() {return new Dayjs()}dayjs.prototype = Dayjs.prototype// 統一導出g.dayjs = dayjs
})(this)

Day.js獲取、設置、操作時間

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script src="./libs/dayjs.js"></script><script >// 1.拿到Dayjs的對象// var day = dayjs()// 獲取時間// console.log(day.year(), (day.month() + 1), day.date(), day.hour(), day.minute(), day.second())// 2.設置時間var day = dayjs().year(2021).month(5).date(1)console.log(day.year(), (day.month() + 1), day.date(), day.hour(), day.minute(), day.second())</script>
</body>
</html>

Day.js解析、國際化、插件

實踐操作

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script src="./libs/dayjs.js"></script><script>// 1.增加一天var day = dayjs() // dayjs 對象// .add(1, 'year') // 增加一年// .add(2, 'month') // 增加2個月// .add(-1, 'month') // 減去一個月// .subtract(1, 'year')  // 減去一年// .subtract(1, 'month')// .subtract(1, 'day') // .startOf('year')  // 一年的開始 2022-01-01 00:00:00// .startOf('month')  // // .startOf('day')  //// 時間的格式化console.log( day.format("YYYY-MM-DD HH:mm:ss") )</script>
</body>
</html>

時間解析

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script src="./libs/dayjs.js"></script><script>// 1.解析一個字符串(ISO 8601)類型的時間// YYYY-MM-DD HH:mm:ss// YYYY-MM-DD// YYYY/MM/DD// var day = dayjs('2021-2-2 12:00:10') // dayjs 對象// 2.解析時間戳(毫秒)// var day = dayjs(1656206934331) // dayjs 對象// 3.解析時間戳(秒)// var day = dayjs.unix( 1656206934 ) // dayjs 對象// 4.解析Date對象// var day = dayjs(new Date('2022-10-1')) // dayjs 對象// 時間的格式化// console.log( day.format("YYYY/MM/DD HH/mm/ss") )</script>
</body>
</html>

插件使用

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script src="./libs/dayjs.js"></script><!-- 會在 Dayjs 的原型上添加: fromNow .... --><script src="./libs/dayjs.relative-time.min.js"></script><!-- 給給dayjs的全局變量 Ls 添加了一個中文支持--><script src="./libs/dayjs.zh-cn.min.js"></script><script>// 1.安裝插件dayjs.extend(dayjs_plugin_relativeTime)// 2.切換使用中文dayjs.locale('zh-cn')// 1. 1小時   5分鐘   2天前var day = dayjs(1656206934331) // dayjs 對象console.log(day.fromNow())</script>
</body>
</html>

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

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

相關文章

前端Ui設計工具

PS 稿、藍湖、Sketch 和 Figma 前端 UI 設計工具的對比分析 PS 稿&#xff08;Adobe Photoshop&#xff09; 提供精準設計細節&#xff1a;PS 稿能讓前端更精準地理解頁面布局、元素尺寸、顏色等&#xff0c;通過精確測量和查看信息面板&#xff0c;把握設計元素的空間關系、…

映射關系5

明白&#xff01;&#x1f680; 你要我 繼續擴展&#xff0c;在這套 C98 代碼里加一個功能&#xff1a; 根據完整的5位ID&#xff0c;反查出對應的路徑。 OK&#xff0c;我直接接著上面那版來&#xff0c;給你補充 getPathFromId 方法&#xff0c;并且保持整體風格統一&#…

編譯原理:由淺入深從語法樹到文法類型

文法與語言基礎&#xff1a;從語法樹到文法類型 文法&#xff08;Grammar&#xff09;和語言&#xff08;Language&#xff09;是計算機科學和語言學中解析和理解語言結構的核心概念。無論是編程語言的編譯器設計&#xff0c;還是自然語言處理&#xff08;NLP&#xff09;中的…

第十三步:vue

Vue 1、上手 1、安裝 使用命令&#xff1a;npm create vuelatestvue文件后綴為.vueconst app createApp(App)&#xff1a;初始化根組件app.mount("#app")&#xff1a;掛載根組件到頁面 2、文件 script標簽&#xff1a;編寫jstemplate標簽&#xff1a;編寫htmls…

Pytest-mark使用詳解(跳過、標記、參數 化)

1.前言 在工作中我們經常使用pytest.mark.XXXX進行裝飾器修飾&#xff0c;后面的XXX的不同&#xff0c;在pytest中有不同的作 用&#xff0c;其整體使用相對復雜&#xff0c;我們單獨將其抽取出來做詳細的講解。 2.pytest.mark.skip()/skipif()跳過用例 import pytest #無條…

基于 Spring Boot 的井字棋游戲開發與實現

目錄 引言 項目概述 項目搭建 1. 環境準備 2. 創建 Spring Boot 項目 3. 項目結構 代碼實現 1. DemoApplication.java 2. TicTacToeController.java 3. pom.xml 電腦落子策略 - Minimax 算法 findBestMove 方法 minimax 方法 運行游戲 總結 引言 在軟件開發領域&…

【算法筆記】貪心算法

一、什么是貪心算法&#xff1f; 貪心算法是一種在每一步選擇中都采取當前看起來最優&#xff08;最“貪心”&#xff09;的策略&#xff0c;從而希望得到全局最優解的算法設計思想。 核心思想&#xff1a;每一步都做出局部最優選擇&#xff0c;不回退。適用場景&#xff1a;…

現代c++獲取linux所有的網絡接口名稱

現代c獲取linux所有的網絡接口名稱 前言一、在linux中查看網絡接口名稱二、使用c代碼獲取三、驗證四、完整代碼如下五、總結 前言 本文介紹一種使用c獲取本地所有網絡接口名稱的方法。 一、在linux中查看網絡接口名稱 在linux系統中可以使用ifconfig -a命令列舉出本機所有網絡…

打印及判斷回文數組、打印N階數組、蛇形矩陣

打印回文數組 1 1 1 1 1 1 2 2 2 1 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1方法1&#xff1a; 對角線對稱 左上和右下是對稱的。 所以先考慮左上打印&#xff0c; m i n ( i 1 , j 1 ) \text min(i1,j1) min(i1,j1)&#xff0c;打印出來&#xff1a; 1 1 1 1 1 2 2 2 1 2 3 3 1 2 …

詳解UnityWebRequest類

什么是UnityWebRequest類 UnityWebRequest 是 Unity 引擎中用于處理網絡請求的一個強大類&#xff0c;它可以讓你在 Unity 項目里方便地與網絡資源進行交互&#xff0c;像發送 HTTP 請求、下載文件等操作都能實現。下面會詳細介紹 UnityWebRequest 的相關內容。 UnityWebRequ…

UE5 在旋轉A的基礎上執行旋轉B

用徑向slider實現模型旋轉時&#xff0c;得到的結果與ue編輯器里面的結果有很大出入。 問題應該是 兩個FRotator&#xff08;0&#xff0c;10&#xff0c;0&#xff09;和&#xff08;10&#xff0c;20&#xff0c;30&#xff09;&#xff0c; 兩個FRotator的加法結果為&…

4.2 Prompt工程與任務建模:高效提示詞設計與任務拆解方法

提示詞工程&#xff08;Prompt Engineering&#xff09;和任務建模&#xff08;Task Modeling&#xff09;已成為構建高效智能代理&#xff08;Agent&#xff09;系統的核心技術。提示詞工程通過精心設計的自然語言提示詞&#xff08;Prompts&#xff09;&#xff0c;引導大型語…

MySQL 索引的最左前綴匹配原則是什么?

MySQL 索引的最左前綴匹配原則詳解 最左前綴匹配原則&#xff08;Leftmost Prefix Principle&#xff09;是 MySQL 復合索引&#xff08;聯合索引&#xff09;查詢優化中的核心規則&#xff0c;理解這一原則對于高效使用索引至關重要。 核心概念 定義&#xff1a;當查詢條件…

SQL命令

一、控制臺中查詢命令 默認端口號&#xff1a;3306 查看服務器版本: mysql –version 啟動MySQL服務&#xff1a;net start mysql 登錄數據庫&#xff1a;mysql -u root -p 查看當前系統下的數據庫&#xff1a;show databases&#xff1b; 創建數據庫&#xff1a;create…

新增 29 個專業,科技成為關鍵賽道!

近日&#xff0c;教育部正式發布《普通高等學校本科專業目錄&#xff08;2025年&#xff09;》&#xff0c;新增 29 個本科專業&#xff0c;包括區域國別學、碳中和科學與工程、海洋科學與技術、健康與醫療保障、智能分子工程、醫療器械與裝備工程、時空信息工程、國際郵輪管理…

零基礎上手Python數據分析 (23):NumPy 數值計算基礎 - 數據分析的加速“引擎”

寫在前面 —— 超越原生 Python 列表,解鎖高性能數值計算,深入理解 Pandas 的底層依賴 在前面一系列關于 Pandas 的學習中,我們已經領略了其在數據處理和分析方面的強大威力。我們學會了使用 DataFrame 和 Series 來高效地操作表格數據。但是,你是否好奇,Pandas 為何能夠…

Android 13.0 MTK Camera2 設置默認拍照尺寸功能實現

Android 13.0 MTK Camera2 設置默認拍照尺寸功能實現 文章目錄 需求&#xff1a;參考資料架構圖了解Camera相關專欄零散知識了解部分相機源碼參考&#xff0c;學習API使用&#xff0c;梳理流程&#xff0c;偏應用層Camera2 系統相關 修改文件-修改方案修改文件&#xff1a;修改…

HarmonyOS 框架基礎知識

參考文檔&#xff1a;HarmonyOS開發者文檔 第三方庫&#xff1a;OpenHarmony三方庫中心倉 基礎特性 Entry&#xff1a;關鍵裝飾器 Components&#xff1a;組件 特性EntryComponent??作用范圍僅用于頁面入口可定義任意可復用組件??數量限制??每個頁面有且僅有一個無數量…

前端分頁與瀑布流最佳實踐筆記 - React Antd 版

前端分頁與瀑布流最佳實踐筆記 - React Antd 版 1. 分頁與瀑布流對比 分頁&#xff08;Pagination&#xff09;瀑布流&#xff08;Infinite Scroll&#xff09;展示方式按頁分批加載&#xff0c;有明確頁碼控件滾動到底部時自動加載更多內容&#xff0c;無明顯分頁用戶控制用…

Linux網絡編程:TCP多進程/多線程并發服務器詳解

Linux網絡編程&#xff1a;TCP多進程/多線程并發服務器詳解 TCP并發服務器概述 在Linux網絡編程中&#xff0c;TCP服務器主要有三種并發模型&#xff1a; 多進程模型&#xff1a;為每個客戶端連接創建新進程多線程模型&#xff1a;為每個客戶端連接創建新線程I/O多路復用&am…