2021/01/29

Work With Typescript And Webpack

ๅ› ็‚บๅทฅไฝœ็š„้—œไฟ‚ๆŽฅ่งธไบ† angular,ๆ‰€ไปฅๅญธ็ฟ’ไบ† typescript,่ฆบๅพ—้€™ๅทฅๅ…ทๅพˆๅฅฝ็”จ,ๆ–ผๆ˜ฏๅธŒๆœ›ๅœจ้ž angular ็š„็’ฐๅขƒไธ‹ๅฏซ js ๆ™‚ไนŸ็”จ typescript,้€™ๆ™‚่ฆๅ€Ÿ็”จ webpack ๅนซๅฟ™ๆ‰“ๅŒ…ๆˆ browser ๅฏไปฅไฝฟ็”จ็š„ๅ…งๅฎน。

็›ฎ้Œ„็ตๆง‹

├─app
└─src
    │  index.ts
    │
    └─class
            chan.ts
│  index.html
│  tsconfig.json
│  webpack.config.js

config

tsconfig.json
{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "noImplicitAny": true,
    "module": "es6",
    "target": "es5",
    "allowJs": true
  }
}

typescript ็š„ๅŸบ็คŽ้…็ฝฎ

webpack.config.js
const path = require('path');

module.exports = {
    mode: 'development',
    entry: {
        index: {import: './src/index.ts'}
    },
    module: {
        rules: [
            {
                test: /\.tsx?$/,
                use: 'ts-loader',
                exclude: /node_modules/,
            },
        ],
    },
    resolve: {
        extensions: ['.tsx', '.ts', '.js'],
    },
    output: {
        path: path.resolve(__dirname, 'app'),
    },
};

webpack ็š„้…็ฝฎ,ๆœƒๆŽƒๆ entry ๆˆ‘ๆŒ‡ๅฎš็š„ๆช”ๆกˆ่ผธๅ‡บๅˆฐ app ๅŒๆจฃ็š„ๆช”ๅ,็”จ้ž spa ็š„ๆ–นๅผ้–‹็™ผๅพ€ๅพ€้‚„ๆ˜ฏไธๅŒ้ ้ขไฝฟ็”จไธๅŒ็š„ js,ๆ‰€ไปฅ้€™ๅ€‹ๆžถๆง‹ๅฐ user ไธฆไธ่ƒฝ็ฏ€็œ่ณ‡ๆบ,ๅ› ็‚บๆฏๅ€‹ js ้ƒฝๆœƒๅŒ…ไธ€ไปฝ jquery,ๅชๆ˜ฏๅฐ้–‹็™ผ่€…ๆ–นไพฟ็š„ๅทฅๅ…ท่€Œๅทฒ,้™ค้žไฝ ๆœ‰ๆŠŠๆกๆŠŠ็จ‹ๅผๅฏซๅˆฐๆฏๅ€‹้ ้ข้š”้›ขไธไบ’็›ธๅนฒๆ“พ,้‚ฃๅฐฑๅฏไปฅไธ€ๆ”ฏๆช”ๆกˆๆ‰“ๅคฉไธ‹,ไนŸๆ˜ฏ spa ็š„้‹ไฝœๆ–นๅผ。

npm i --save webpack webpack-cli typescript ts-loader

ๅฎ‰่ฃ compiler ้œ€่ฆ็š„ๅทฅๅ…ท

ไฝฟ็”จๆ–นๅผ

npm i -s jquery dayjs
index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Typescript + Webpack</title>
    <script src="app/index.js"></script>
</head>
<body>
    <div id="content"></div>
</body>
</html>
index.ts
import $ from 'jquery';
import { Chan } from './class/chan';

$(function () {
    const chan = new Chan();

    $('div#content').html(chan.getNow());
});
chan.ts
import dayjs from 'dayjs';

export class Chan {
    public getNow(): string {
        return dayjs().toString();
    }
}

ไฝฟ็”จ webpack compiler ไน‹ๅพŒๆˆ‘ๅ€‘้ ้ขไธŠ็š„ div#content ๆœƒๅ‡บ็พ Fri, 29 Jan 2021 09:09:52 GMT,ๅคงๅŠŸๅ‘Šๆˆ。