gpt4 book ai didi

javascript - 如何使用 typescript 和 webpack 创建单页 Web 应用程序?

转载 作者:太空宇宙 更新时间:2023-11-03 22:49:27 24 4
gpt4 key购买 nike

我在 Angular 中创建单页面应用程序已经有一段时间了,现在我想创建一个单页面应用程序,但不使用整个框架。

我想要一个 .html 文件和一个 javascript 文件,该文件将被编译为 typescript 文件,例如 index.ts。在 index.ts 中,我会从其他 typescript 文件导入内容。

网上是否有与我想要实现的目标类似的项目,是否可以像这样设置 npm 项目?

编辑:

过了一段时间,这就是我完成的事情:我的项目结构:

├── bundle.js
├── functions.ts
├── index.html
├── index.ts
├── package.json
├── style.css
├── tsconfig.json
└── webpack.config.js

package.json

{
"name": "rxjs6-demo",
"version": "1.0.0",
"main": "index.ts",
"scripts": {
"start": "webpack-dev-server --open"
},
"devDependencies": {
"ts-loader": "^5.3.1",
"typescript": "^3.2.2",
"webpack": "^4.27.1",
"webpack-cli": "^3.1.2",
"webpack-dev-server": "^3.1.10"
},
"dependencies": {
"rxjs": "^6.4.0"
}
}

tsconfig.json

{
"compilerOptions": {
"outDir": ".",
"noImplicitAny": false,
"sourceMap": true,
"module": "es6",
"target": "es6",
"allowJs": true
},
"include": ["*.ts"],
"exclude": []
}

webpack.config.json

module.exports = {
entry: './index.ts',
output: {
filename: 'bundle.js'
},
mode: 'development',
devtool: 'inline-source-map',
devServer: {
contentBase: '.'
},
module: {
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/
}
]
},
resolve: {
extensions: [ '.tsx', '.ts', '.js' ]
}
};

index.html

<html>
<head>
<link rel="stylesheet" href="style.css">
</head>
<body>
<script src="bundle.js"></script>
</body>
</html>

运行npm start将启动一个webpack-dev-server,每次任何 typescript 文件更改时它都会重新编译我的应用程序。在 index.ts 内部,我可以从其他 .ts 文件导入内容。但我无法完成的是,当 html 或 css 文件发生更改时,让 webpack-dev-server 在浏览器中重新加载我的应用程序。

任何有关我的应用程序结构的帮助或一般建议将不胜感激。

最佳答案

在当前设置下,Webpack 不会处理您的 .html.css文件,因此按理说它也不会监视它们的更改。而不是添加 link标签到您的 .html文件为.css文件,您可以指示 Webpack 处理 .css使用css-loader的文件和style-loader .

首先,您需要安装css-loaderstyle-loader 。例如:

npm i -D css-loader style-loader

css-loader负责处理 CSS 文件和 style-loader负责将它们注入(inject)到 DOM 中。使用此方法时,输出 bundle.js (在您的示例中)将包含转译的 JavaScript 和 CSS,CSS 本身包含在 JavaScript 和 DOM 操作中。

接下来,您需要向 webpack.config.js 添加一条规则:

{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}

这条规则位于 rules与现有的 ts-loader 一起排列规则,指示 Webpack 处理 .css首先使用 css-loader 文件然后style-loader .

最后,您可以将导入添加到 index.ts 中文件:

import './style.css';

这应该是 Webpack 开始处理和监视您的 .css 所需的全部内容。文件。对于其他文件,您可以添加更多 import语句如上所示。

至于.html文件,有一个很好的答案 here这应该有帮助。 SurviveJS here 还提供了一本关于样式主题(以及您可能需要的几乎所有其他内容)的很棒的教程/在线书籍。 。本书还涵盖了诸如生产构建之类的内容,它允许将 CSS 内容提取到单独的文件中以进行生产构建等。

关于javascript - 如何使用 typescript 和 webpack 创建单页 Web 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53683810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com