我有一个以旧 IIFE 风格编写的外部库。我有一个在内部使用这个库的 Web 组件。此 Web 组件是使用 stencil 创建的。现在,如果我在某个项目中使用我的 Web 组件,我必须通过 src 文件将组件 js 文件和这个外部库包含到 index.html 中。如何将此库包含到组件的编译代码中?是否可以不将其重新写入 es6 模块?
这就是我的代码现在的样子(在 index.html 中):
<script src="./myMathLib.js"></script>
<script src="./myWebComponent.js"></script>
我想要这样:
<script src="./myWebComponent.js"></script>
这是我的组件的代码:
import {Component, Prop} from '@stencil/core';
declare var myMathLib: any;
@Component({
tag: 'my-component',
shadow: true
})
export class MyComponent {
@Prop() name: string;
@Prop() age: number;
render() {
return <div>
The age of {this.name} is: {myMathLib.calculate(this.age)}
</div>;
}
}
这是我的 tsconfig.json:
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"allowUnreachableCode": false,
"declaration": false,
"experimentalDecorators": true,
"lib": [
"dom",
"es2017"
],
"moduleResolution": "node",
"module": "esnext",
"target": "es2017",
"noUnusedLocals": true,
"noUnusedParameters": true,
"jsx": "react",
"jsxFactory": "h"
},
"include": [
"src",
"types/jsx.d.ts"
],
"exclude": [
"node_modules"
]
}
这是我的 stencil.config.ts:
import { Config } from '@stencil/core';
export const config: Config = {
namespace: 'mycomponent',
outputTargets:[
{ type: 'dist' },
{ type: 'docs' },
{
type: 'www',
serviceWorker: null // disable service workers
}
]
};