Angular源码理解–启动过程

文章目录

  • Angular源码理解--启动过程
  • 整体框架
    • 自执行匿名函数
    • 启动过程
  • 启动过程中的点滴
    • window.angular.bootstrap
    • bindJQuery()解析
    • publishExternalAPI(angular)
      • extend()
      • setupModuleLoader(window)
  • 参考:

学习AngularJS v1.4.7的记录。

整体框架

自执行匿名函数

(function(window, document, undefined) {})(window, document);
  • angular.js加载完后,就立即执行。匿名函数能创建一个“私有”的命名空间(封装),这样就不会破坏全局的命名空间。
  • 传入window和document是为了在代码压缩时,进行优化。
  • 传入undefined是为了确保undefined为真的未定义。因为undefined能够被重写,赋予新值。

基本上所有的JS库(jQuery,require,ng)都是用匿名自执行函数启动的。

启动过程

我们在写angular程序时,首先会用angular.module()定义一个模块。所以源码中必定暴露出来一个全局angular对象。创建全局angular对象:

angular  =  window.angular || (window.angular = {})

启动完成后,就将这个全局angular对象暴露出来。

最核心的启动过程,在angular.js的最后几行:

  if (window.angular.bootstrap) {//检查是不是多次启动/导入angular.jsconsole.log('WARNING: Tried to load angular more than once.');return;}bindJQuery();//绑定jQuerypublishExternalAPI(angular);//对angular对象绑定ng发布的方法jqLite(document).ready(function() {//就是jQuery的$(document).ready();angularInit(document, bootstrap);});

这就是angular启动的主要步骤:

  • (1)匿名自执行函数,保证angular.js加载完后,立即执行其中的代码。
  • (2)通过window.angular.bootstrap检测是否angular被多次启动/angular.js被多次加载。多次加载,耗时耗力,不值得提倡。在window对象上绑定一个属性,这就是个全局属性,全局的嘛,就能用来判断是否多次加载了(自己写lib也可以好好利用window属性哦)。
  • (3)绑定jQuery,即bindJQuery():如果用户导入了jQuery,就用这个导入的外部jQuery。否则用angular内置的jQLite。看来jQuery已经成为不可或缺的神物。
  • (4)发布ng的API,即publishExternalAPI()。这样我们才能用angular.module()之类的方法。
  • (5)查找ng-app,即angularInit()。ng的边界就是ng-app。

第二章就依次介绍angular启动中的细节。

启动过程中的点滴

window.angular.bootstrap

ng启动后,angular对象就生成了,并被添加为window对象的属性。这就是说,如果只想判断angular.js是否被重复加载,用if (window.angular)就够了,为什么ng要用if (window.angular.bootstrap)来判断呢?接下来就慢慢解释。
window.angular.bootstrap 是什么呢?是个函数:function bootstrap(element, modules, config) {}。这个函数是用来做什么的?看源码,注释中说“Use this function to manually start up angular application”,这是用来手动启动ng应用的。
ng应用的启动,分为两种:“自动启动”和“手动启动”。自动启动ng应用,就是在html中用ng-app指令来标记ng应用。html中没用ng-app标记ng边界,也可以在JS中用bootstrap()来手动启动ng应用。

<!doctype html>
<html><body><div ng-controller="WelcomeController">{{greeting}}</div><script src="angular.js"></script><script>var app = angular.module('demo', []).controller('WelcomeController', function($scope) {$scope.greeting = 'Welcome!';});angular.bootstrap(document, ['demo']);</script></body>
</html>

了解ng还有手动启动模式后,就能回答第一段的问题,if (window.angular.bootstrap)不仅仅是为了判断angular.js被重复加载,也能判断ng是否被多次启动。

bindJQuery()解析

bindJQuery()的主要逻辑,就是下面几行代码(精简的伪代码):

jQuery = window.jQuery;
if (jQuery && jQuery.fn.on) {//如果发现导入了jQuery,就使用导入的jQuery
jqLite = jQuery;
… …
} 
else {//如果没导入jQuery,就是用ng自己的jQLitejqLite = JQLite;
}
angular.element = jqLite; //angular.element()就相当于使用jQuery中的$()/jQuery()

注释就说明了bindJQuery()的主逻辑,bindJQuery()的主要功能就是判断使用外部导入的jQuery还是Angular内置的JQlite(轻量级的jQuery)。Angular使用jQuery实现了数据绑定。jQuery中的经典$(document).ready()用法,也可以用ng的方式来写:

jqLite(document).ready(function() {//就是jQuery的$(document).ready();angularInit(document, bootstrap);
});

bindJQuery()是如何判断用户是否导入外部jQuery呢?要解释这个问题,需要搞明白导入jQuery后,会发生什么。下面是jQuery的源代码的框架:

(function( window, undefined ) {var jQuery = function( selector, context ) {return new jQuery.fn.init( selector, context, rootjQuery );};window.jQuery = window.$ = jQuery;
})( window );

从代码中可以发现,jQuery导入并启动后,会在window对象上添加jQuery属性。所以可以在Angular代码中,判断window是否有jQuery属性来判断外部jQuery是否导入。
大部分lib的启动,都会在window上添加属性。所以我们可以通过判断window上是否含有xxx属性,来判断xxx库是否被导入。

publishExternalAPI(angular)

调用publishExternalAPI(),就是发布ng的API。所谓发布API,就是将一些工具函数拷贝到全局的angular对象。这些工具函数,最常用的有:

  • module():angular.module()来定义一个模块,ng程序中肯定要写这个函数。
  • element():angular.element()相当于jQuery中的选择器$()/jQuery()。
  • bootstrap():用于手动启动ng应用(2.1有解释)。
    发布这些工具函数的主流程为:
publishExternalAPI(angular){
extend(angular, {  //拷贝工具函数(element()/bootstrap())到angular对象'bootstrap': bootstrap,'element': jqLite,...});
angularModule = setupModuleLoader(window); //为angular对象创建和加载module()函数
angularModule('ng', ['ngLocale'], ['$provide', //创建内置模块ng,相当于angular.module(‘ng’, [‘ngLocale’], …),创建名为ng的模块function ngModule($provide) {$provide.provider('$compile', $CompileProvider).directive({//创建ng内置的directivea: htmlAnchorDirective, //在ng中,a已经被扩充为指令input: inputDirective,form: formDirective,...});$provide.provider({//创建ng内置的provider$http: $HttpProvider, //$http是ng内置的常用service...});}
});
}

extend()

extend()函数,主要拷贝工具函数(element()/bootstrap())到angular对象。在我们这个ng版本里,extend()是这样的:

function extend(dst) {return baseExtend(dst, slice.call(arguments, 1), false);
}

先不管函数形参等这些细节,直接看注释,“Extends the destination object dst by copying own enumerable properties from the src object”,可以这样用extend():var object = angular.extend({}, object1, object2)。
为了更好的理解extend(),先来用一次看看。其实extend()也被当做API发布到angular对象上了,可以在打开ng页面的浏览器console里,输入x = angular.extend({}, {n:1}),这样就创建了一个新对象,并赋值给x。此时x.n=1。
君可见,extend()函数,就是负责对dst扩展属性的,它能将dst后面的对象,都拷贝到dst中,作为dst的一个属性。
extend()的核心,是baseExtend(),下面是精简后的伪代码:

function baseExtend(dst, objs, deep) {for (var i = 0, ii = objs.length; i < ii; ++i) {//遍历所有待复制的objectsvar obj = objs[i];var keys = Object.keys(obj);for (var j = 0, jj = keys.length; j < jj; j++) {//遍历object的所有属性,并复制到dstvar key = keys[j];var src = obj[key];dst[key] = src;}}return dst;
}

综上,extend()就是遍历src对象(objs),并将src对象的属性拷贝到dst。
吐槽一句,源码的变量命名(key, src, dst, ii, jj),编码风格(++i, j++不一致),都很一般。

setupModuleLoader(window)

setupModuleLoader(window)的主要作用,就是对angular对象添加module属性,并对module()返回的对象添加controller(),directive(),service()等属性。
setupModuleLoader()函数是一个多层闭包(三层,三个return):

function setupModuleLoader(window) {function ensure(obj, name, factory) {//如果obj.name存在,则返回obj.name。否则,对obj添加name属性,并用factory()生成对象为其赋值。return obj[name] || (obj[name] = factory());}var angular = ensure(window, 'angular', Object); //确保window对象含有angular属性return ensure(angular, 'module', function() {//返回angular.modulevar modules = {};return function module(name, requires, configFn) {//返回一个函数module(),传给angular.modulevar assertNotHasOwnProperty = function(name, context) {if (name === 'hasOwnProperty') {throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);}};assertNotHasOwnProperty(name, 'module');if (requires && modules.hasOwnProperty(name)) {modules[name] = null;}return ensure(modules, name, function() {//执行angular.module()后,得到一个对象,这个对象中含有很多方法provider: invokeLaterAndSetModuleName('$provide', 'provider'),service: invokeLaterAndSetModuleName('$provide', 'service'),filter: invokeLaterAndSetModuleName('$filterProvider', 'register'),controller: invokeLaterAndSetModuleName('$controllerProvider', 'register'),directive: invokeLaterAndSetModuleName('$compileProvider', 'directive'),...};};});
};
  • 执行setupModuleLoader(window),就得到angular.module
  • 执行angular.module(),就得到一个对象
  • 这个得到的对象,有很多“成员函数”,比如controller(),directive(),service()
    所以,我们在ng中编程:
var helloModule = angular.module("ctrlsModule", []);
helloModule.controller("helloCtrl", function($scope){$scope.greeting = {text : "hello world2"}
});

可以这样理解:

  • angular.js加载执行后,就暴露出了angular对象及其module()方法
  • 执行angular.module(),就得到一个对象helloModule
  • helloModule对象有controller()方法,所以执行helloModule.controller(“helloCtrl”,xxx),就创建了一个名为"helloCtrl"的controller。

setupModuleLoader()是比较关键,比较重要,比较核心的一个函数。对它的功能进行分析后,再回过头来看看能从它这学到什么。

  • 1.多层闭包,可以实现angular.module().controller()这样的链式调用
  • 2.代码中少写一些if,用assertNotHasOwnProperty()来代替if
  • 3.不要太过纠结变量命名,源码中不是也将name/ensure/obj这样没有确切含义的名字用于变量命名么

参考:

  • [1] http://www.imooc.com/learn/156
  • [2] jQuery源码分析。http://nuysoft.iteye.com/blog/1177451
  • [3] jQuery源码分析文章。http://www.cnblogs.com/chyingp/archive/2013/05/30/jquery-core.html
  • [4] jQuery源码。http://code.jquery.com/jquery-2.1.4.js
  • [5] Angular源码分析。http://www.html-js.com/article/Source-code-analysis-original-the-execution-flow-of-angularjs130-source-code-analysis
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. js、Jquery、AngularJs中的extend方法

    1、js中的extend(); http://www.cnblogs.com/5201314/archive/2009/05/22/1487213.html js虽然是脚本语言&#xff1b;但是同样支持与java、C#、C等语言的继承&#xff1b;使用Object.extend()方法实现继承&#xff1b; Object.extend function(destination, source) { for…...

    2024/4/21 3:27:42
  2. 【译】在时间属性上慎用Angular.js1.4的“angular.merge”函数

    在时间属性上慎用Angular.js1.4的“angular.merge”函数 原文&#xff1a;Pay Attention to "angular.merge" in 1.4 on Date Properties 今天我将应用从Angular.js1.3.9升级到1.4的时候&#xff0c;发现了一些Bug。在经过一翻研究后&#xff0c;发现它们与时间属性及…...

    2024/4/20 7:42:10
  3. Angular从0到1:function(上)

    1、前言 Angular作为最流行的前端MV*框架&#xff0c;在WEB开发中占据了重要的地位。接下来&#xff0c;我们就一步一步从官方api结合实践过程&#xff0c;来学习一下这个强大的框架吧。 Note&#xff1a;每个function描述标题之后的★标明了该function的重要程度&#xff08;1…...

    2024/4/21 3:27:39
  4. angular.js学习笔记(三)

    全局API&#xff1a; 当angular.js加载完成之后&#xff0c;一些全局API即可用&#xff0c;主要包括 1.copy(src,[dst]):对象或数组复制 2.element(element):返回被包装为Jquery元素的DOM节点&#xff0c;区分JQuery类库加载顺序成为完整JQ对象或其子集。 3.equals(obj1,obj2):…...

    2024/4/21 3:27:38
  5. 基于angularjs的发送短信功能

    基于angularjs的发送短信功能 需求&#xff1a;由于业务的需要&#xff0c;需要为游戏后台管理系统添加一个一键发送短信的功能&#xff0c;&#xff08;需要接入第三方平台来发送短信&#xff0c;&#xff09;前端的工作有将输入的电话号码和短信内容传送给后台&#xff0c;与…...

    2024/4/21 3:27:44
  6. Angular.js和Vue.js 深度对比

    本文翻译自&#xff1a;https://dzone.com/articles/co... 转载请注明出自&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 Vue.js 是开源的 JavaScript 框架&#xff0c;能够帮助开发者构建出美观的 Web 界面。…...

    2024/4/21 3:27:36
  7. 21-angular.merge

    通过从src对象(s)复制自己的可枚举属性到dst&#xff0c;深度扩展了目标对象的dst。您可以指定多个src对象。如果您想保留原始对象&#xff0c;那么可以通过将空对象作为目标来实现:var object angular.merge({}, object1, object2). 不像extend(),merge()递归地进入源对象的对…...

    2024/4/21 3:27:35
  8. AngularJS API之extend扩展对象

    2019独角兽企业重金招聘Python工程师标准>>> angular.extend(dst,src)&#xff0c;在我实验的1.2.16版本上是支持深拷贝的。但是最新的API显示&#xff0c;这个方法是不支持深拷贝的。另外&#xff0c;第二个参数src支持多个对象。 第一种使用方式 var user3 angul…...

    2024/4/20 20:06:54
  9. 使用extend 解决Object.assign 浅拷贝问题

    Object.assign 是浅拷贝&#xff0c;如下代码&#xff0c;x 输出值被修改&#xff0c;这有时不是我们希望看到的 var x {d: {e: {g: 9}}} var a {b: 1, c: 2, d: {e: {g: 2}}} Object.assign(a,x) a.d.e.g "abc" console.log(x) 安装 npm install extend 修改后…...

    2024/4/20 20:06:48
  10. angular.injector()

    <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>angular.injector</title></head><body ng-app"injectorExample"><h1>angular.injector</h1><p><span>描述&#xff…...

    2024/4/20 20:06:46
  11. angular.extend深拷贝(deep copy)

    在用到angular.extend的时候,正好碰到一个对象,是层层嵌套的Array, 结果发现只能extend第一层,查阅官文档,确实不支持deep copy: Note: Keep in mind that angular.extend does not support recursive merge (deep copy). 在stackoverflow找到一个方案,只是好像没什么用,看了一…...

    2024/4/19 21:46:52
  12. Angular2 模版表单

    表单 在app.module.ts里导入FormsModule。 在form中添加表单名,代表整个表单。如&#xff1a;#loginForm"ngForm"。 输入框必须绑定[(ngModel)],且必须有name&#xff0c;如果需要进行表单验证&#xff0c;则需要#username"ngModel"&#xff0c;则usernam…...

    2024/4/20 20:06:44
  13. angularcli 第三篇(数据循环*ngFor、条件判断*ngIf)

    1、数据循环 *ngFor &#xff08;1&#xff09;普通循环 <ul><li *ngFor "let item of list" >{{ item }}</li> </ul> &#xff08;2&#xff09;遍历数组同时获取索引值key <ul><li *ngFor "let item of list; let i inde…...

    2024/4/20 20:06:43
  14. angular2的显示数据的方式

    *ngFor:循环遍历数组属性 在组建中定义一个数组 heros [张三,李四,王五,赵六,马七]; 在定应的html中这么写&#xff1a; <ul> <li *ngFor""let hero of heros><!--这里的hero就是下面的{{hero}} ,heros就是组建中定义的heros--> {{hero}} &…...

    2024/4/20 20:06:42
  15. Angular 图片、条件判断(*ngIf、[ngSwitch]、属性[ngClass]、[ngStyle])

    1. Angular 图片、条件判断&#xff08;*ngIf、[ngSwitch]、属性[ngClass]、[ngStyle]&#xff09; 1.1 图片 1.1.1 本地图片&#xff1a; 我们在assets目录下面新建images文件夹并且往里面放入图片 <h1>引入图片</h1> <img src"assets/images/虎牙.pn…...

    2024/4/20 20:06:41
  16. Angular 问题解决 —— 使用 *ngIf 判断空数组时,结果为 true;(Array.prototype.isPrototypeOf(obj) 含义、 Object.keys(obj) 用法

    目录 解决方案 (Array.prototype.isPrototypeOf(obj) Object.keys(obj) 解决方案 创建一个公用方法&#xff0c;用于检测 空数组 或 空对象 时&#xff0c;返回 falsepublic isRightValue (obj: any): boolean { // 检验 null、undefined、if (!obj && obj ! 0) {…...

    2024/4/21 3:27:35
  17. Angular2瞎看

    Angular2瞎看介绍angular/cli新建模块构造器和周期钩子指定数据类型自定义类(数据类)数据绑定元素类绑定元素属性绑定遍历、判断事件组件通信跨组件通信:服务和依赖注入DI管道符filter路由抽离模块ng-UI库ng表单验证HttpClientModule介绍 学习angular的相关点&#xff0c;完全…...

    2024/4/21 3:27:33
  18. AngularJS中关于ng-class和*ngIf指令

    在工作中写ionic项目时&#xff0c;因为用的ionic3&#xff0c;与之相搭配的是Angular4&#xff0c;之前不会&#xff0c;就大致看看&#xff0c;写项目的时候遇到再查找。 在写到etf指数基金的时候&#xff0c;有的可以立即抢购&#xff0c;有的是封闭期。想实现这种效果&…...

    2024/4/21 3:27:33
  19. angular2使用ng2-handsontable

    官方网站:https://valor-software.com/ng2-handsontable/html <div class="row col-md-10" *ngIf="datas && datas.length > 0"> <div id="hot" class="hot handsontable dataTable table-striped center-block&…...

    2024/4/21 3:27:31
  20. Angular2 内置指令 NgFor 和 NgIf 详解

    http://www.jb51.net/article/89781.htm 在这一章节中,我们来学习如何使用Angular2来展示数据,以及如何使用它的内置指令NgFor和NgIf 首先要确保你有一个可以运行起来的Angular2的样例程序,最好就是我们上一章节中完成的那个QuickStart小项目或者你自己根据官网上面的步骤完成的…...

    2024/4/21 3:27:30

最新文章

  1. C++笔记打卡第23天(STL常用算法)

    1.常用排序算法 sort&#xff1a;对容器内元素进行排序 class Myprint { public:void operator()(int val){cout << val << " ";} };// 查自定义数据类型 void test01() {vector<int> v;v.push_back(10);v.push_back(20);v.push_back(15);v.push_b…...

    2024/4/26 11:32:37
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 前端开发攻略---Vue通过自定义指令实现元素平滑上升的动画效果(可以自定义动画时间、动画效果、动画速度等等)。

    1、演示 2、介绍 这个指令不是原生自带的&#xff0c;需要手动去书写&#xff0c;但是这辈子只需要编写这一次就好了&#xff0c;后边可以反复利用。 3、关键API IntersectionObserver IntersectionObserver 是一个用于监测元素是否进入或离开视口&#xff08;viewport&#x…...

    2024/4/26 10:38:31
  4. 巨控科技新品发布:全方位升级,引领智能控制新纪元

    标签: #巨控科技 #智能控制 #新品发布 #GRM560 #OPC560 #NET400 在智能控制领域&#xff0c;巨控科技始终以其前沿技术和创新产品引领着市场的潮流。近日&#xff0c;巨控科技再次以其行业领先的研发实力&#xff0c;推出了三大系列的新产品&#xff0c;旨在为各行各业提供更…...

    2024/4/23 6:25:41
  5. 6.9物联网RK3399项目开发实录-驱动开发之PWM的使用(wulianjishu666)

    嵌入式实战开发例程&#xff0c;珍贵资料&#xff0c;开发必备&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1149x7q_Yg6Zb3HN6gBBAVA?pwdhs8b PWM 使用 前言 AIO-3399J 开发板上有 4 路 PWM 输出&#xff0c;分别为 PWM0 ~ PWM3&#xff0c;4 路 PWM 分别使用在…...

    2024/4/21 18:24:03
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/25 11:51:20
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/25 18:39:24
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/25 18:38:39
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/25 18:39:23
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/25 18:39:22
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/25 18:39:22
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/25 18:39:20
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/25 16:48:44
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/25 13:39:44
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/25 18:39:16
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/25 0:00:17
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/25 4:19:21
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/25 18:39:12
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/25 2:10:52
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/25 18:39:00
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/25 13:19:01
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/25 18:38:58
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/25 18:38:57
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57