Tag: Javascript

  • Vue – 運行ES Module,import與export

    Vue – 運行ES Module,import與export

    Node.js require、module以及exports 模組設定 – Hugo Habor


    1. Module(模組)

    JS- Module 1內容

    export1.js

    const component = {
    data: [ // 資料
    '這是第一句話',
    '這是第二句話',
    '這是第三句話'
    ],
    removeData(id) {
    this.data.splice(id, 1);
    this.render();
    },
    render() { // 渲染方法
    const list = document.querySelector('.component ul');
    let content = '';
    this.data.forEach((item, i) => {
    content = `${content}<li>${item} <button type="button" class="btn" data-id="${i}">移除</button></li>`
    });
    // 縮寫優化
    // const content = component.data.map(item => `<li>${item}</li>`).join('');
    list.innerHTML = content;

    // 加入監聽
    const btns = document.querySelectorAll('.btn');
    btns.forEach(btn => btn.addEventListener('click', (e)=> {


    const id = e.target.dataset.id;
    this.removeData(id)
    }))
    },
    init() {
    this.render();
    }
    }
    component.init();

    匯出JS- Module 內容,進入HTML

    esModule.html

    <!DOCTYPE html><html><head><title>ES 模組</title><meta name="viewport" content="width=device-width, initial-scale=1"><link href="images/favicon.ico" rel="shortcut icon"><meta charset="UTF-8"><script src="/javascripts/vendor.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/vue/3.2.37/vue.global.js"></script></head><body class="bg-lighter">
    <div class="container main my-5"><div class="row"><main class="col post">
    <!-- Vue標題 --><div class="mb-4"><h1 class="mt-0 text-muted">ES 模組</h1><small>檔名:<code>esModule.html</code></small></div>

    <div class="component">
    <ul></ul>
    </div>

    <script type="module">


    import NewComponent from './export1.js';

    NewComponent .init();

    </script>

    </main>

    <aside
    class="col-md-3"><div class="sticky-top" style="top: 76px">
    <div class="list-group">

    <a href="/es6/shorthand.html"
    class="list-group-item list-group-item-action

    ">
    縮寫
    </a>

    <a href="/es6/this.html"
    class="list-group-item list-group-item-action

    ">
    this 的運作
    </a>

    <a href="/es6/arrow_function.html"
    class="list-group-item list-group-item-action

    ">
    箭頭函式
    </a>

    <a href="/es6/separation_of_concerns.html"
    class="list-group-item list-group-item-action

    ">
    關注點分離
    </a>

    <a href="/es6/separation_of_concerns_work.html"
    class="list-group-item list-group-item-action

    ">
    關注點分離 練習題
    </a>

    <a href="/es6/object_reference.html"
    class="list-group-item list-group-item-action

    ">
    物件參考特性
    </a>

    <a href="/es6/promise.html"
    class="list-group-item list-group-item-action

    ">
    Promise
    </a>

    <a href="/es6/esModule.html"
    class="list-group-item list-group-item-action

    active">
    ES Module
    </a>

    <a href="/es6/esModule_2.html"
    class="list-group-item list-group-item-action

    ">
    ES 模組延伸觀念
    </a>

    </div>
    <div class="mt-3 text-end p-2 bg-light rounded">
    <small class="text-black-50 fw-light mb-0">文件版本:2022/11/1</small>
    </div>
    </div>

    </aside>

    </div>
    </div>

    <nav class="navbar fixed-top navbar-expand-sm navbar-dark bg-secondary">
    <div class="container-fluid">
    <a class="navbar-brand" href="/">Vue 3 練習手冊</a>
    <div class="collapse navbar-collapse" id="navbarCollapse">
    <ul class="navbar-nav">
    <li class="nav-item active">
    <a class="nav-link active" href="/es6/shorthand.html">JS 必備觀念</a>
    </li>
    <li class="nav-item">
    <a class="nav-link " href="/intro/createApp.html">認識 Vue.js</a>
    </li>
    <li class="nav-item">
    <a class="nav-link " href="/template/v-text.html">模板</a>
    </li>
    <li class="nav-item">
    <a class="nav-link " href="/optionsApi/options-methods.html">方法</a>
    </li>
    <li class="nav-item">
    <a class="nav-link " href="/components/component_register.html">元件</a>
    </li>
    <li class="nav-item">
    <a class="nav-link " href="/advApi/adv-refs.html">進階</a>
    </li>
    <li class="nav-item">
    <a class="nav-link " href="/router/vue-router.html">路由</a>
    </li>
    <li class="nav-item">
    <a class="nav-link " href="/composition/proxy.html">Composition API</a>
    </li>
    <li class="nav-item">
    <a class="nav-link " href="/pinia/layout.html">Pinia</a>
    </li>
    </ul>
    </div>
    </div>
    </nav>

    <footer class="footer py-2 bg-light">
    <div class="container text-center">
    <small class="text-black-50 fw-light mb-0">六角學院 Vue 課程專屬文件</small>
    </div>
    </footer>
    <link rel="stylesheet" href="/stylesheets/all.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css">
    </body>
    </html>


    JS- Module 2內容

    <!DOCTYPE html><html><head><title>ES 模組</title><meta name="viewport" content="width=device-width, initial-scale=1"><link href="images/favicon.ico" rel="shortcut icon"><meta charset="UTF-8"><script src="/javascripts/vendor.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/vue/3.2.37/vue.global.js"></script></head><body class="bg-lighter">
    <div class="container main my-5"><div class="row"><main class="col post">

    <!-- 章節標題 --><div class="mb-4"><h1 class="mt-0 text-muted">ES 模組</h1><small>檔名:<code>esModule.html</code></small></div>

    <div class="component">
    <ul></ul>
    </div>

    // 在script 區域內,匯入 module

    <script type="module">


    import NewComponent from './export1.js';
    NewComponent .init();



    // #2-2 具名匯入
    // 單一匯入(建議寫法)

    import {} from './export2.js';


    </script>

    </main>

    <aside
    class="col-md-3"><div class="sticky-top" style="top: 76px">
    <div class="list-group">

    <a href="/es6/shorthand.html"
    class="list-group-item list-group-item-action

    ">
    縮寫
    </a>

    <a href="/es6/this.html"
    class="list-group-item list-group-item-action

    ">
    this 的運作
    </a>

    <a href="/es6/arrow_function.html"
    class="list-group-item list-group-item-action

    ">
    箭頭函式
    </a>

    <a href="/es6/separation_of_concerns.html"
    class="list-group-item list-group-item-action

    ">
    關注點分離
    </a>

    <a href="/es6/separation_of_concerns_work.html"
    class="list-group-item list-group-item-action

    ">
    關注點分離 練習題
    </a>

    <a href="/es6/object_reference.html"
    class="list-group-item list-group-item-action

    ">
    物件參考特性
    </a>

    <a href="/es6/promise.html"
    class="list-group-item list-group-item-action

    ">
    Promise
    </a>

    <a href="/es6/esModule.html"
    class="list-group-item list-group-item-action

    active">
    ES Module
    </a>

    <a href="/es6/esModule_2.html"
    class="list-group-item list-group-item-action

    ">
    ES 模組延伸觀念
    </a>

    </div>
    <div class="mt-3 text-end p-2 bg-light rounded">
    <small class="text-black-50 fw-light mb-0">文件版本:2022/11/1</small>
    </div>
    </div>

    </aside>

    </div>
    </div>

    <nav class="navbar fixed-top navbar-expand-sm navbar-dark bg-secondary">
    <div class="container-fluid">
    <a class="navbar-brand" href="/">Vue 3 練習手冊</a>
    <div class="collapse navbar-collapse" id="navbarCollapse">
    <ul class="navbar-nav">
    <li class="nav-item active">
    <a class="nav-link active" href="/es6/shorthand.html">JS 必備觀念</a>
    </li>
    <li class="nav-item">
    <a class="nav-link " href="/intro/createApp.html">認識 Vue.js</a>
    </li>
    <li class="nav-item">
    <a class="nav-link " href="/template/v-text.html">模板</a>
    </li>
    <li class="nav-item">
    <a class="nav-link " href="/optionsApi/options-methods.html">方法</a>
    </li>
    <li class="nav-item">
    <a class="nav-link " href="/components/component_register.html">元件</a>
    </li>
    <li class="nav-item">
    <a class="nav-link " href="/advApi/adv-refs.html">進階</a>
    </li>
    <li class="nav-item">
    <a class="nav-link " href="/router/vue-router.html">路由</a>
    </li>
    <li class="nav-item">
    <a class="nav-link " href="/composition/proxy.html">Composition API</a>
    </li>
    <li class="nav-item">
    <a class="nav-link " href="/pinia/layout.html">Pinia</a>
    </li>
    </ul>
    </div>
    </div>
    </nav>

    <footer class="footer py-2 bg-light">
    <div class="container text-center">
    <small class="text-black-50 fw-light mb-0">六角學院 Vue 課程專屬文件</small>
    </div>
    </footer>
    <link rel="stylesheet" href="/stylesheets/all.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css">
    </body>
    </html>

    HTML-Script 匯入其他Module

    引用export2.js 模組內部的函式

    函式內部可以裝載任何演算式。

  • Node.js 核心模組-create-server

    Node.js 核心模組-create-server

    資料參考

    Node.js – createServer 起手式 – iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天 (ithome.com.tw)

    1.創建你的第一個 Node.js 伺服器

    • req (request) – 當使用者呼叫資料時所發出的請求。
    • res (response) – 回傳給使用者的資料。

    帶入 createServer 參數

    2.運行你的伺服器

    Edge瀏覽器內的操作

    3.觀看伺服器運作狀態

    4.觀看伺服器運作狀態

    檔案: node apphttp.js

    觀看Visual Studio 內的Terminal 狀態

    Edge瀏覽器內的狀態

  • Node.js require、module以及exports 模組設定

    Node.js require、module以及exports 模組設定

    An Essential Guide to Node.js Modules (javascripttutorial.net)

    1. Module(模組)

    2. require 函數

    3. exports 和 module.exports

    exports 與 module.exports 的不同!

    • module.exports 是暴露模塊的主要對象。當你將一個模塊導入另一個文件時,你實際上獲得的是 module.exports 的內容。
    • exportsmodule.exports 的一個參考,方便將多個對象或函數暴露給外部。

    通常,如果你想從一個模塊導出單一對象(如函數、類等),你可以直接使用 module.exports。如果你想導出多個對象或函數,你可以使用 exports

    使用 module.exports 導出物件內的資料:

    4. 利用Terminal Prompt 出執行檔案 app.js

    5. 模組設定_常用方法

    一般來說,我們要包裹底層商業邏輯,用module.exports 局多!

  • JSON與foreach的逐一條列應用。

    JSON與foreach的逐一條列應用。

    [主題週]專題報導-開放資料 (Open Data)相關議題與應用 (114230) – Cool3c

    目的

    JSON 檔案範例:

    臺北市資料大平臺 (data.taipei)


    HTML

    JavaScript

    執行結果

  • JavaScript-forEach()方法

    參考資料:

    想知道嗎:JS forEach()的 index 位置 – W.S.Wade – Medium

    Array 原型的 forEach 有多好用? 學會高階函數之後都不想寫 JavaScript 以外的程式語言了 | by realdennis | Medium


    範例Code01

    範例Code02

    範例Code03

    以上範例顯示結果

    判斷是否為偶數_範例

    顯示結果

    留一個問題給大家去思考

  • JavaScript-this呼叫的三種方法: call、apply、bind

    JavaScript-this呼叫的三種方法: call、apply、bind

    引言

    在 JavaScript 中,this 是一個特殊的Keyword,代表了現在執行代碼的目標。然而我們需要在不同的上下文中調用函,這時就會用到 callapply bind 這三種方法。

    JS-函式宣告Function Declared、函式表達Function Express、This – Hugo Habor

    This


    參考連接

    https://hsuchihting.github.io/javascript/20200804/4095833756/

    https://www.shubo.io/javascript-this/


    1. call 方法

    call 方法用於調用一個函數,並指定函數內的 this ,以及將函數的參數以參數列表的形式傳遞進去。

    2. apply 方法

    3. bind 方法

    結論

    總結,callapplybind 是 JavaScript 中用於控制函數中 this 值的三種方法。它們在不同的情境中有不同的應用,初學者可以通過這些例子更好地理解它們的使用方式。熟練掌握這些方法將有助於開發者更靈活地處理函數調用的上下文。

  • JavaScript 事件監聽addEventListener() 方法

    JavaScript中用來監聽事件的方法。這個方法可以讓你向特定的HTML元素(例如: 按鈕、表單、文檔等)添加addEventListener(),當指定的事件發生時,執行相應的 JavaScript 程式碼。

    該方法用途

    addEventListener()方法可用於監控DIY原生元件。

    可從e 原生事件中選取你要監聽的事件元素!


    參考資料

    https://www.runoob.com/jsref/met-document-addeventlistener.html

    https://www.freecodecamp.org/chinese/news/javascript-addeventlistener-example-code/


    1. addEventListener() 方法概述

    它可以接受三個參數:

    • 事件類型(event type) 要監聽的事件類型,例如 “click”、”keydown”、”submit” 等。
    • 監聽器函數(listener function) 當事件發生時要執行的函數。
    • 捕獲階段(useCapture,可選) 一個Boolean值,表示事件是否在捕獲階段處理。通常使用 false,即在冒泡階段處理事件。

    2. 使用 addEventListener() 解釋

    文法結構

    2.1 添加基本的點擊事件監聽器

    我們可能想知道關於事件的更多信息,例如什麼元素被點擊了。在這種情況下,我們需要向函數傳入一個事件參數。

    2.2 使用捕獲階段處理事件

    2.3 帶有事件對象的監聽器函數


    3. 完整的範例碼01

    HTML

    JavaScript

    4. 完整的範例碼02

    HTML

    JavaScript

    DOM監聽器的使用

  • JavaScript 核心概念-物件取值、新增、刪除

    JavaScript 核心概念-物件取值、新增、刪除

    物件裡面可以包含很多Type 的屬性,本篇主要陳述每個取值、新增、刪除的方式

    取值、新增、刪除的方式可以利用物件. 標記號(點的方式) 呼叫出來!

    https://chiangyuchi.github.io/2019/05/06/2019-05-06/

    取值的方法01

    我就用人體的組成方式,來給大家示範一下

    試試看在物件內的函式呼叫方式

    component.callFamily

    取值的方法02

    呼叫元件內屬性成員

    component.members.kidney

    取值的方法03

    用不同的方式,呼叫元件內屬性成員

    得知一個結論

    當你要呼叫屬性名稱時,屬性名稱可以為 = 數值、字串


    呼叫函式的方法


    新增屬性

    將執行視窗內的物件屬性拉下去,會看到內部的屬性。


    刪除屬性

    刪除componet 裡面的屬性

    1.deposit

    2.後來新增的[$$$]

    delete component.屬性內容;

  • JavaScript DOM-擷取HTML 表單內容

    JavaScript DOM-擷取HTML 表單內容

    參考連結:

    https://hackmd.io/@MikanS/BypCrTfkF


    網頁表單內容擷取

    HTML

    好想吃漢來海港喔~

    JavaScript

    CSS

    網頁表單畫面

    HTML Form 表單

    執行視窗

    qureyselector示範畫面

    操作執行視窗

    此時我們可以來操作看看執行視窗,將.txt 賦於其他字串資料。

    JavaScript

    執行視窗


    直接操作執行視窗_觀看互動過後的更新值

    將原本的肯德基 >> 拿坡里炸雞

    輸入 list.value

    你會得到了最新更改過的賦予值!

    https://www.lovethispic.com/image/337093/the-day-you-stop-learning-is-the-day-you-start-dying

  • JavaScript DOM 擷取方法-getAttribute, innerHTML and textContent

    JavaScript DOM 擷取方法-getAttribute, innerHTML and textContent

    本篇介紹如何透過 JavaScript 來控制或修改 DOM Tree 上面的節點元素。

    忘記了可以看這一篇

    這些元素可以是標籤、屬性或文本內容。

    讓我們討論如何使用getAttributeinnerHTML textContent 方法

    參考資料:

    https://hackmd.io/@5LnhTJLgQHyOZgGrp8n55g/SJMDAXp5Y

    https://tsuifei.github.io/blog/DOM_Methodes/


    DOM-Tree

    https://javascript.plainenglish.io/the-dom-of-javascript-848506ebf386


    1. HTML 取用元素標籤

    首先,我們看以下HTML元素。

    HTML文檔由各種不同的元素組成,這些元素可以是標籤、屬性或文本內容。

    在我們的討論中,我們將專注於一些常見的HTML元素。

    a. <h1><h2> 標籤

    <h1><h2> 標籤通常用於標題,其中<h1> 表示主標題,而<h2> 表示次要標題。

    我們可以藉由使用getAttribute 方法來獲取這些標籤的屬性值,例如idclass

    b. <a> 標籤

    <a> 標籤用於創建超連結,其中href 屬性指定連結的URL。我們可以使用getAttribute 方法來獲取href 屬性的值

    c. <span> 標籤

    <span> 標籤通常用於包裹內容以便進行樣式化或JavaScript操作。我們可以使用innerHTML textContent 方法來獲取或設置<span> 元素的內容。


    DOM 環境配置

     <script src="JS\all.js"></script>

    HTML 文本內容

    我們先把HTML 文本內容寫好,內部元素<a>、<span>、<h1>、<h2>

    <body>
    
        <h1> 這是海景第一排</h1>
        <h2 class="header"> 就是我啊! </h2>
        <a href="https://products.aspose.app/cells/zh-hant/editor/html" class="link">
            <span> 連結給他點下去! </span></a>
    
    </body>

    JS檔案建立

    檔案名稱: all.js

    JS-getAttribute方法

    getAttribute 方法用於獲取HTML元素的特定屬性的值。

    如果我們想要獲取上面 <a> 元素href 屬性的值,以下可以這樣做。

    const myLink=document.querySelector("a");
    console.log(myLink.getAttribute("href"));
    console.log(myLink.getAttribute("class"));
    console.log(hrefurl_data); // 輸出: 連結的URL

    JS-innerHTML方法

    innerHTML 方法用於擷取設置元素內部HTML內容,包括所有子元素和文本。這方法允許我們直接操作元素的HTML結構。例如:

    console.log(myLink.innerHTML);

    JS-innerHTML、textContent混用方法

    textContent 方法 ,它會自動過濾掉HTML標籤。這對於獲取純文本非常有用。

    // 給與一個賦予值 content
    let content = myLink.innerHTML;
    console.log(content);

    執行結果顯示