# HyUI內訓會議記錄 ###### tags: `HyUI4.0` 時間:2022/12/13.14 參與人員: 琬樺 恬恬 切切切成員 奕雯 會議紀錄: ## 12/13 ### 定義github相關規範 * 增加 github hyui readme 相關規範 * 以後下載hyui模板都經由releases下載,確保是最新的檔案 * 以後回報問題時可以使用github的issue功能,可以直接連commit的問題,並且可以指定需要注意的人員 * github Milestones的相關教學 * github Projects的相關教學 ### vscode git 終端機基礎教學 ### vscode 設定安裝 * 寵物設定檔分享 * 工作區與User設定建立討論 * 推薦套件分享 ### JS簡介 / 變數 / 資料型別 * 由網景開發(Netscape),後續由google工程師撰寫V8引擎,後來瀏覽器就開始支援javascript * javascript可使用在前端、後端、手機app * javascript的前世今生 * javascript是弱型別語言 * javascript可分為原始型別、物件型別 * 原始型別有七種 Number、String、Undefined、Null、Boolean、Symbol(於 ECMAScript 6 新定義)、BigInt * 自動轉型有明的和暗的(Number+String = String / String*Number = Number) * 有宣告沒附值就會是Undefined * NaN等於Number不等於NaN * Null等於物件,但這是Bug ### 陣列與物件 ##### 陣列 * 有兩種方式可以產生陣列 ```javascript= //Array Constructor (陣列建構式) let array = new Array() //Array Literal (陣列實字) let array = [1,2,3,4] ``` * 陣列使用[]包裹,使用[]取值 array[0] * length可以計算陣列內的數量,又或是更改陣列的數量,變更後的數量如果比原始的小,該陣列的值會直接消失,就算把數量加回來,也會是空值(Undefined) * 陣列第一筆為0 * 可以用.push()增加陣列內容 * 可以利用array[X]增加陣列內容 * 陣列內可以有字串、數字、物件、陣列、function ##### 物件 * 有兩種方式可以產生物件 ```javascript= //Object Constructor (物件建構式) let object = new Object() //Object Literal (物件實字) let object = [1,2,3,4] ``` * 物件使用{}包裹內容,使用 ./['']取值 object.object / object['object'] * 物件內可以有字串、數字、物件、陣列、function * 可以用object.object = xxx 增加物件內容 ### 函式 & ES6語法介紹 ##### 函式 * 函式會包含三個部分 ```javascript= function xxx(){} ``` 1.函式的名稱 2.()參數,參數與參數之間會 用逗號 , 隔開 3.{}執行的內容,是函式功能的主要區塊 * 定義函式的方式有三種 1.函式宣告(Function Declaration) ```javascript= function xxx(){} ``` 2.函式運算式(Function Expressions) ```javascript= let fn = function(){} ``` 3.透過 new Function 關鍵字建立函式 ```javascript= let fn = new function() ``` * 變數的有效範圍有分全域(window)和區域(function),區域變數無法被全域抓到,只能在區域內使用 ##### Hoisting * 變數會被提升,但附值不會 ```javascript= function(){ var x = 100;} function(){ var x; x = 100; } ``` * function 整體會被提升,不論在哪邊執行都可以運行function ##### ES6語法介紹 ###### let、const * ES6新增了let、const * let、const沒有變數提升 * let、const不可重複命名 * let、const以{}為作用域 ###### 樣板字面子 * 傳統要新增字串使用''/"",es6新增``可使用 * 不需要再使用+來連結字串並使用${表達式} ```javascript= let name = 'jack'; console.log(`Hello ${name}`) //Hello jack ``` * 可以有預設資料使用 || 區隔 ```javascript= let name = ''; console.log(`Hello ${name || 'Mark'}`) //Hello Mark ``` * 以前需要另外使用 \ 來將字串做換行,es6會依照輸入的字串分斷顯示在前台也會直接分斷 ###### 箭頭函示 ```javascript= // 以前的宣告方式 let fn = function(){ return 'Hello' } //es6 的箭頭函示 let fn = () => { return 'Hello' } //當函式只有一個參數時,不需要使用括號 const greeting = person => `Hello, ${person}`; greeting('Aaron'); // Hello, Aaron // 等同於這樣寫 const greeting = function (person) { return `Hello, ${person}`; }; //當函式沒有參數時,則一定要有括號 var callSomeone = () => '小明' + '吃飯了' console.log(callSomeone()) ``` 12/14 ### 控制判斷 * 呼叫 function 時的參數,或者透過 = 賦值時 在 = 「右側」的部分都屬於運算式 * 運算子的類型很多,依照性質來分類 * 算術運算子包括 數學四則運算「加、減、乘、除」 * 數字跟字串相加會變字串 10 + '100' = '10100' * a++ 等於 a = a+1 / a-- 等於 a = a-1 * =是附值, == 是比較,=== 嚴謹比較,會比較型別 ```javascript= 1 == '1' //true 1 === '1' //false ``` * a && b ```javascript= var a1 = true && true; // t && t 回傳 true var a2 = true && false; // t && f 回傳 false var a3 = false && true; // f && t 回傳 false var a4 = false && (3 == 4); // f && f 回傳 false var a5 = "Cat" && "Dog"; // t && t 回傳 Dog var a6 = false && "Cat"; // f && t 回傳 false var a7 = "Cat" && false; // t && f 回傳 false ``` * a || b ```javascript= var o1 = true || true; // t || t 回傳 true var o2 = false || true; // f || t 回傳 true var o3 = true || false; // t || f 回傳 true var o4 = false || (3 == 4); // f || f 回傳 false var o5 = 'Cat' || 'Dog'; // t || t 回傳 Cat var o6 = false || 'Cat'; // f || t 回傳 Cat var o7 = 'Cat' || false; // t || f 回傳 Cat ``` * 三元運算子 ```javascript= 條件 ? 值1 : 值2; //若不需要else也必須輸入'' 條件 ? 值1 : ''; ``` ##### if / else if 介紹 ##### switch 介紹 ## 12/14 ### for 迴圈 ### for/while/do...while差別及介紹 for: 留意for括號最後面的元素是指跑完迴圈後,跑下一個迴圈前的變更 while 與 for 的差別: for: 確定迴圈要跑多少次 while:不確定迴圈要跑多少次 do while:至少會跑迴圈一次 ### foreach 寫法 ```javascript let data=[30,40] data.forEach( function(item,idx,array){ console.log(item,idx,array) }) //第三個參數用到的機會不多 //寶弟demo let arr=[8,5,4]; let count=0; arr.forEach((item)=>{ count += item }) console.log(count); //17 ``` ### 立即執行函式 立即執行的函式 在區域外無法調用函式 可以用window全域物件來傳遞 onclick只會執行最後一次綁定的 ### addEventlister addeventlister 預設是 false 冒泡事件與捕獲事件 console.log(e) 顯示執行的 event e.target 執行該event的Dom元素 ### JS常用語法 classList.add classList.remove style main.style.paddingTop='20px' 要用駝峰命名 inertBefore innerHtmL ...族繁不及備載 相關可參考 [HyUI 內訓大綱](https://hackmd.io/fVp_jjH_T7WOxOpyUsLtsQ) ### JS JQ 差異 ...族繁不及備載 相關可參考 [HyUI 內訓大綱](https://hackmd.io/fVp_jjH_T7WOxOpyUsLtsQ) ### JS this 要看函式在哪裡執行 所決定this指向哪裡 ### HYUi4.0 * icon 名稱錯誤 * color的部分 等更新UI再來做討論 (Hyui 可以再增加多色功能) * @layer 裡面不要有!important * swiper 介紹 * Hyui JS介紹 * JS語系支援問題(可問交力) * fatfoot 開關 * 搜尋欄位 下拉開關 * git 解衝突 協作問題 ## 臨時動議 #### 大家如果有問題 也可以在下方留言