在没有 web-pack 和 Angular CLI 的情况下创建 Angular 项目
Creating Angular project without web-pack and Angular CLI
我是 Angular 初学者。我想在没有 CLI 的情况下创建 angular 项目。我已参考此 link - https://blog.angularindepth.com/setting-up-angular-from-scratch-1f518c65d8ab 来创建项目,但问题与浏览器中加载的 index.html 无关。
我不确定给定的 link 中的配置是否特定于 Angular 6,因为我正在使用 Angular 8。如果我收到一些解决方案,那将是很大的帮助。这是我创建的文件:
****index.html**
<html>
<head>
<meta charset="utf-8">
<title>Hello, Angular</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<app-main>Loading...</app-main>
<script src="../node_modules/systemjs/dist/system.src.js"></script>
<script src="../systemjs.config.js"></script>
<script>
System.import('../dist/main.js').catch(function (err) {
console.error(err);
});
</script>
<h1>Hi Abc</h1>
</body>
</html>
systemjs.config.js
System.config({
paths: {
'npm:': '/node_modules/'
},
map: {
app: 'dist/app',
// app: { main: 'main.js', defaultExtension: 'js' },
'@angular/core': 'npm:@angular/core/bundles/core.umd.js',
'@angular/common': 'npm:@angular/common/bundles/common.umd.js',
'@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
'@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
'@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
'core-js': 'npm:core-js',
'zone.js': 'npm:zone.js',
// 'rxjs': 'npm:rxjs',
'rxjs': 'npm:rxjs-compat',
'tslib': 'npm:tslib/tslib.js'
},
packages: {
'dist/app': {},
'rxjs': {'main': 'index.js','defaultExtension': 'js'},
'rxjs/operators': {'main': 'index.js','defaultExtension': 'js'},
'rxjs/internal-compatibility': {'main': 'index.js','defaultExtension': 'js'},
'rxjs/testing': {'main': 'index.js','defaultExtension': 'js'},
'rxjs/ajax': {'main': 'index.js','defaultExtension': 'js'},
'rxjs/webSocket': {'main': 'index.js','defaultExtension': 'js'},
'rxjs-compat': {'main': 'index.js','defaultExtension': 'js'},
'core-js': {},
'zone.js': {}
}
});
main.ts
import 'core-js/es7/reflect';
import 'zone.js/dist/zone';
import { platformBrowserDynamic }
from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
platformBrowserDynamic().bootstrapModule(AppModule);
app.module.ts
import { AppComponent} from './app.component';
import {NgModule } from '@angular/core';
import { BrowserModule} from '@angular/platform-browser';
@NgModule({
imports : [BrowserModule],
declarations : [AppComponent],
bootstrap : [AppComponent]
})
export class AppModule {
}
我参考了各种 link,但仍然找不到如果我使用 Angular 8 并参考上面的 link,index.html 将从哪里加载?
简单的回答是:不要这样做。
Angular CLI 可让您生成基本结构,以 Angular 最佳实践的方式实现。它甚至可以为您生成基本的单元测试。
=> 只需使用 CLI 生成您的项目:)
这些是我所做的更改并且有效:
System.import('../dist/main.js');
到
System.import('app');
已更改 Systemjs.config.js:
System.config({
paths: {
'npm:': 'node_modules/'
},
map: {
'app': 'dist/app',
'@angular/core': 'npm:@angular/core/bundles/core.umd.js',
'@angular/common': 'npm:@angular/common/bundles/common.umd.js',
'@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
'@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
'@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
'core-js': 'npm:core-js',
'zone.js': 'npm:zone.js',
'rxjs': 'npm:rxjs',
'tslib': 'npm:tslib/tslib.js'
},
packages: {
'rxjs': {
'main': 'index.js', 'defaultExtension': 'js'
},
'app': {
'main': './main.js'
},
'rxjs/operators': { 'main': 'index.js', 'defaultExtension': 'js' },
'rxjs/internal-compatibility': { 'main': 'index.js', 'defaultExtension': 'js' },
'rxjs/testing': { 'main': 'index.js', 'defaultExtension': 'js' },
'rxjs/ajax': { 'main': 'index.js', 'defaultExtension': 'js' },
'rxjs/webSocket': { 'main': 'index.js', 'defaultExtension': 'js' },
'rxjs-compat': { 'main': 'index.js', 'defaultExtension': 'js' },
'core-js': {},
'zone.js': {}
}
})
使用 "systemjs": "^0.20.19", "zone.js": "^0.10.2" in package.json 代替最新的 System.js 依赖项。
这就是它运作良好的方式:)
我是 Angular 初学者。我想在没有 CLI 的情况下创建 angular 项目。我已参考此 link - https://blog.angularindepth.com/setting-up-angular-from-scratch-1f518c65d8ab 来创建项目,但问题与浏览器中加载的 index.html 无关。 我不确定给定的 link 中的配置是否特定于 Angular 6,因为我正在使用 Angular 8。如果我收到一些解决方案,那将是很大的帮助。这是我创建的文件:
****index.html**
<html>
<head>
<meta charset="utf-8">
<title>Hello, Angular</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<app-main>Loading...</app-main>
<script src="../node_modules/systemjs/dist/system.src.js"></script>
<script src="../systemjs.config.js"></script>
<script>
System.import('../dist/main.js').catch(function (err) {
console.error(err);
});
</script>
<h1>Hi Abc</h1>
</body>
</html>
systemjs.config.js
System.config({
paths: {
'npm:': '/node_modules/'
},
map: {
app: 'dist/app',
// app: { main: 'main.js', defaultExtension: 'js' },
'@angular/core': 'npm:@angular/core/bundles/core.umd.js',
'@angular/common': 'npm:@angular/common/bundles/common.umd.js',
'@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
'@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
'@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
'core-js': 'npm:core-js',
'zone.js': 'npm:zone.js',
// 'rxjs': 'npm:rxjs',
'rxjs': 'npm:rxjs-compat',
'tslib': 'npm:tslib/tslib.js'
},
packages: {
'dist/app': {},
'rxjs': {'main': 'index.js','defaultExtension': 'js'},
'rxjs/operators': {'main': 'index.js','defaultExtension': 'js'},
'rxjs/internal-compatibility': {'main': 'index.js','defaultExtension': 'js'},
'rxjs/testing': {'main': 'index.js','defaultExtension': 'js'},
'rxjs/ajax': {'main': 'index.js','defaultExtension': 'js'},
'rxjs/webSocket': {'main': 'index.js','defaultExtension': 'js'},
'rxjs-compat': {'main': 'index.js','defaultExtension': 'js'},
'core-js': {},
'zone.js': {}
}
});
main.ts
import 'core-js/es7/reflect';
import 'zone.js/dist/zone';
import { platformBrowserDynamic }
from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
platformBrowserDynamic().bootstrapModule(AppModule);
app.module.ts
import { AppComponent} from './app.component';
import {NgModule } from '@angular/core';
import { BrowserModule} from '@angular/platform-browser';
@NgModule({
imports : [BrowserModule],
declarations : [AppComponent],
bootstrap : [AppComponent]
})
export class AppModule {
}
我参考了各种 link,但仍然找不到如果我使用 Angular 8 并参考上面的 link,index.html 将从哪里加载?
简单的回答是:不要这样做。 Angular CLI 可让您生成基本结构,以 Angular 最佳实践的方式实现。它甚至可以为您生成基本的单元测试。
=> 只需使用 CLI 生成您的项目:)
这些是我所做的更改并且有效:
System.import('../dist/main.js');
到
System.import('app');
已更改 Systemjs.config.js:
System.config({
paths: {
'npm:': 'node_modules/'
},
map: {
'app': 'dist/app',
'@angular/core': 'npm:@angular/core/bundles/core.umd.js',
'@angular/common': 'npm:@angular/common/bundles/common.umd.js',
'@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
'@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
'@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
'core-js': 'npm:core-js',
'zone.js': 'npm:zone.js',
'rxjs': 'npm:rxjs',
'tslib': 'npm:tslib/tslib.js'
},
packages: {
'rxjs': {
'main': 'index.js', 'defaultExtension': 'js'
},
'app': {
'main': './main.js'
},
'rxjs/operators': { 'main': 'index.js', 'defaultExtension': 'js' },
'rxjs/internal-compatibility': { 'main': 'index.js', 'defaultExtension': 'js' },
'rxjs/testing': { 'main': 'index.js', 'defaultExtension': 'js' },
'rxjs/ajax': { 'main': 'index.js', 'defaultExtension': 'js' },
'rxjs/webSocket': { 'main': 'index.js', 'defaultExtension': 'js' },
'rxjs-compat': { 'main': 'index.js', 'defaultExtension': 'js' },
'core-js': {},
'zone.js': {}
}
})
使用 "systemjs": "^0.20.19", "zone.js": "^0.10.2" in package.json 代替最新的 System.js 依赖项。 这就是它运作良好的方式:)