可以直接在 index.html 中添加脚本
<script src="./assets/scripts/my-custom-script.js"></script>
更新
在我看来,你有一个选择:
在其中创建一个名为dynamic_script的文件夹assets
,然后将 2 个文件放在那里
1-您的 js 文件(如 ARRS5125-MLL-YourJsfile.js)
2- JSON 文件(如 info.json),在此处设置文件名
{
"filename":"ARRS5125-MLL-YourJsfile.js"
}
笔记
每当更改脚本名称时,请根据您的 js 名称更改 JSON 文件中的文件名。
现在,您可以动态加载您的 js 文件,如下所示
第 1 步:
创建服务:
@Injectable({ providedIn: "root" })
export class LoadScriptService {
constructor(private http: HttpClient) { }
getJsonFileName(): Promise<any> {
return this.http.get('./assets/dynamic_script/info.json').toPromise();
}
loadScript(name: string) {
return new Promise((resolve, reject) => {
//load script
let script = document.createElement('script');
script.type = 'text/javascript';
script.src = `/assets/dynamic_script/${name}`;
if (script.readyState) { //IE
script.onreadystatechange = () => {
if (script.readyState === "loaded" || script.readyState === "complete") {
script.onreadystatechange = null;
resolve({ script: name, loaded: true, status: 'Loaded' });
}
};
} else { //Others
script.onload = () => {
resolve({ script: name, loaded: true, status: 'Loaded' });
};
}
script.onerror = (error: any) => resolve({ script: name, loaded: false, status: 'Loaded' });
document.getElementsByTagName('head')[0].appendChild(script);
});
}
}
第 2 步:在您的组件中
export class AppComponent implements OnInit {
constructor(private scriptService: LoadScriptService) { }
ngOnInit(): void {
}
private async loadJsonAndScript() {
const fileInfo = await this.scriptService.getJsonFileName();
this.scriptService.loadScript(fileInfo.fileName)
}
load() {
this.loadJsonAndScript();
}
}
笔记:
每当您在 dynamic_script中添加新的 js 文件时构建项目后,然后手动打开info.json
并替换新名称。