Author: lioajimzen

  • 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 模組內部的函式

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

  • 當你的Windows應用程式完全無法執行時,該怎麼辦?

    當你的Windows應用程式完全無法執行時,該怎麼辦?


    文章資訊來源:

    【以解決】各位.exe檔案打不開,不要相信”在 Windows 7 或 Windows Vista 中無法打開 .EXE 檔案”這篇文章 @程式設計板 哈啦板 – 巴哈姆特 (gamer.com.tw)

    文章快速導覽


    先等一下!

    這種情況,幾乎是Windows 更新之後,留下來的爛攤子…

    如果你的Windows 狀況如下…

    1. 不能上網
    2. 滑鼠右鍵>>新增>>無法新增任何檔案
    3. 沒有另一台電腦
    4. 沒有朋友… (嗚嗚

    那麼… 恭喜你啦!

    下方內容,不用再看了!

    乖乖地拿電腦去找人重新安裝吧!


    解決辦法

    我們先把檔名”新增文字文件.txt”改成”新增文字文件.bat”

    「檔名改為.bat檔名,依舊是txt格式」的問題

    檔案總管_顯示出附檔名

    檔案總管>> 檢視 >>詳細資料夾 >> 副檔名

    我們再回去看一下之前的【新文字文件】

    將bat_插入註冊文字

    改完之後還是無法啟動,點滑鼠右鍵一下選新增文字文件.bat

    滑鼠右鍵按”編輯”!

    你記事本可以打開的話,把下面的內容複製貼上

    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT\.exe] @="exefile"

    再更改檔名

    生成reg檔案

    最後結語

    (字幕)Windows 應用程式圖示不見或變成空白 – YouTube

  • Python environments in VS Code-建立虛擬環境

    Python environments in VS Code-建立虛擬環境

    參考資料

    Install packages in a virtual environment using pip and venv – Python Packaging User Guide

    Using Python Environments in Visual Studio Code

    Python的環境種類

    1.創建一個新的專案資料夾

    2.創建一個新的virtual environment

    選一個Python 環境版本

    創立完成

    3.Import 模組常常找不到怎麼辦?

    國外網友的解決方法

    ERROR: Can not perform a ‘–user’ install. User site-packages are not visible in this virtualenv. · Issue #14327 · microsoft/vscode-python (github.com)

    1. 進入虛擬環境文件夾中的 pyvenv.cfg 檔案。
    2. 把 include-system-site-packages 設置為 true 並存檔。
    3. 重新啟用虛擬環境。 這應該可以解決問題!

  • 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監聽器的使用

  • WPF-Data Binding-Two Way資料繫結 雙向

    不管您的Data Binding繫結元素是什麼,也不論資料來源的本質,每個繫結一定會遵循下圖所說明的模型。

    我們可以把Data Binding 說成資料在元件間互相溝通的橋樑,所以必須要指定Source 發送第 以及你要傳到的目的地-目標(Target)。

    參考資料:

    https://www.cnblogs.com/lzhp/archive/2012/09/11/2673810.html

    元件間雙向傳遞

    表單外觀

    示範兩個TextBox 透過改變內部Text 的方式,來做雙向資料傳遞

    XAML

    我們的範例,主要TextBox1 跟 TextBox2 兩者會互相丟資料。

    UpdateSourceTrigger預設值 =Default

    UpdateSource 這一個屬性是需透過原生元件內部事件改變了屬性,之後來去做傳送。

    利用下列屬性

    Text=”{ Binding ElementName=txtFName, Path=Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged