angularJS -- 手动初始化

初始化分为两种:自动初始化和手动初始化

angularJS在两种情况下使用自动初始化,通过ng-app指令配置:

  • 在 DOMContentLoaded 事件触发时
  • 在 angular.js 脚本被执行 && document.readyState 被置为 'complete'
<!DOCTYPE html>
<html>
<head>
	<title>auto-init</title>
	<script type="js/angular.min.js"></script>
</head>
<body ng-app="myApp">

</body>
<script type="text/javascript">
	angular.module('myApp', [])...;
</script>
</html>

自动初始化会把js代码入侵到html文件中,所以又提供了手动初始化,通过angular.bootstrap配置

angular.module('appName',[]);//必须要有
angular.bootstrap(element, [appName], [config]);
参数参数描述
element要绑定的DOM元素
appNamemodule名称
config详细配置
<!DOCTYPE html>
<html xmlns:ng="http://angular.js.org">
<head>
	<title>初始化</title>
	<script type="text/javascript" src="js/angular.min.js"></script>
</head>
<body>
	Hello World!
</body>
<script type="text/javascript">
	angular.element(document).ready(function () {
		// body...
		angular.module('myApp', []);
		angular.bootstrap(document, ['myApp']);
	});
</script>
</html>

以下是 Angular 代码运行时遵循的顺序:

  • 在HTML页面以及所有代码加载完毕后,Angular 会去找到应用的根元素(通常是文档的根节点)
  • 调用 api/angular.bootstrap 去 编译 各元素成为一个可执行的且双向绑定的应用

angular.bootstrap只会绑定第一次加载的对象,后面重复的绑定或者其他对象的绑定,都会在控制台输出错误提示

 延迟启动

这个特色可以让像 Batarang 一样的测试工具横插一杠进入 Angular 的引导进程,并且溜进模块中的DI注册机制中,这样就可以替换或者增强DI提供的服务。

当 api/angular.bootstrap 被调用时,如果 window.name 包含 NG_DEFER_BOOTSTRAP! 前缀,引导进程会被暂停直到 angular.resumeBootstrap() 被调用。

angular.resumeBootstrap() 以一个可选的数组作为参数。这个数组是包含了应用启动时需要被注入的模块。

↑ 这部分不懂,抄教程的,后面若是有研究再补充 ?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
dynamic-datasource-spring-boot-starter 提供了两种手动初始化数据源的方式: 1. 使用 DataSourceBuilder 类手动创建数据源 你可以使用 DataSourceBuilder 类手动创建数据源,然后将它添加到动态数据源中。具体代码如下: ```java @Configuration public class DataSourceConfig { @Bean @ConfigurationProperties(prefix = "spring.datasource.master") public DataSource masterDataSource() { return DataSourceBuilder.create().build(); } @Bean @ConfigurationProperties(prefix = "spring.datasource.slave1") public DataSource slave1DataSource() { return DataSourceBuilder.create().build(); } @Bean @ConfigurationProperties(prefix = "spring.datasource.slave2") public DataSource slave2DataSource() { return DataSourceBuilder.create().build(); } @Bean public DataSource dynamicDataSource(@Qualifier("masterDataSource") DataSource masterDataSource, @Qualifier("slave1DataSource") DataSource slave1DataSource, @Qualifier("slave2DataSource") DataSource slave2DataSource) { DynamicRoutingDataSource dynamicRoutingDataSource = new DynamicRoutingDataSource(); Map<Object, Object> dataSourceMap = new HashMap<>(3); dataSourceMap.put(DataSourceKey.MASTER.name(), masterDataSource); dataSourceMap.put(DataSourceKey.SLAVE1.name(), slave1DataSource); dataSourceMap.put(DataSourceKey.SLAVE2.name(), slave2DataSource); // Set master datasource as default dynamicRoutingDataSource.setDefaultTargetDataSource(masterDataSource); // Set slave datasource as target datasource dynamicRoutingDataSource.setTargetDataSources(dataSourceMap); // To put datasource keys into DataSourceContextHolder to judge if the datasource is exist DynamicDataSourceContextHolder.dataSourceKeys.addAll(dataSourceMap.keySet()); return dynamicRoutingDataSource; } } ``` 2. 手动添加数据源到动态数据源中 你也可以手动将已经创建好的数据源添加到动态数据源中。具体代码如下: ```java @Autowired private DynamicRoutingDataSource dynamicRoutingDataSource; @Bean public void addDataSource() { DataSource dataSource = createDataSource(); dynamicRoutingDataSource.addDataSource("key", dataSource); } ``` 以上两种方式都是可以手动初始化数据源的,只需要根据具体的场景选择合适的方式即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值