angular源码分析:angular中的依赖注入式如何实现的
一、准备
angular的源码一份,我这里使用的是v1.4.7。源码的获取,请参考我另一篇博文:angular源码分析:angular源代码的获取与编译环境安装
二、什么是依赖注入
据我所知,依赖注入的概念最早使用时在java编程中。依赖注入和控制反转差不多是一个概念,是编程中一种重要的解耦手段。依赖注入不是目的,它是 一系列工具和手段,最终的目的是帮助我们开发出松散耦合、可维护、可测试的代码和程序。这条原则的做法是大家熟知的面向接口,或者说是面向抽象编程。具体 含义是:当某个角色(可能是一个对象实例,调用者)需要另一个角色(另一个对象实例,被调用者)的协助时,在传统的程序设计过程中,通常由调用者来创建被 调用者的实例。但在angular里,创建被调用者的工作不再由调用者来完成,因此称为控制反转;创建被调用者实例的工作通常由angular来完成,然 后注入调用者,因此也称为依赖注入。
写了这么多,举个具体的例子:
angular.module('myService',['ng']);angular.module('myService').factory('currentTime',function($window){ return function(){ var now = $window.Date(); return now; }; });
在上面这段代码中,我首先创建了一个"myService"的模块,让后在这个模块上创建了一个叫"currentTime"的服务。
我编 写的这个服务是依赖于另一个服务"$window"。如果我的服务"currentTime",在其他地方被另外的代码依赖,那么angular的框架就 会自动去查找是否存在$window这样的服务,如果存在,就会将其传入到我代码中定义的工厂方法中,来实例化一个currentTime,并且将 currentTime记录下来,下次需要就不再实例化,而是直接给与;如果不存在,就会先去实例化$window这个服务。
这里需要注意的在angular中,服务都是单实例形式存在(可以利用这点来完成组件间的通信),控制器(controller)是可以多实例的。
这么做好:
1.松散耦合。编写组件的标准变成:有且只有依赖于被 “依赖注入”的对象,不允许依赖于其他。这样,一个对象与外界的“扇入”就被限制在了所依赖的对象范围内,是一种可控的状态,“扇出”同样只能在被依赖的时候才会建立。
2.可维护。由于上面的性质,决定了依赖于某对象的对象可以不用管依赖住对象的内部实现。依赖对象对象外的只有接口和实现的功能,当需求发生变化的时候,我就需要修改对象的依赖模块就行了。
3.可测试。想想在对某个模块做单元测试,在有依赖注入的情况下,只需要构建理想的被依赖模块,注入到这个要测试的模块中,然后检查输出结构就行了。
三、js中依赖注入的原理
1.js中的函数有一个默认的方法toString()
可以将函数的作为字符串输出。举例:
function test(params){ //在控制台输出 console.log('this is a test'); } var out = test.toString();
在上面的代码中,out的内容将是function test(params){\n //在控制台输出\n console.log('this is a test');\n }
2.可见,通过toString可以得到函数的具体实现,当让也可得到函数所需要的参数
3.那么我们在调用函数前就可以根据函数中的参数来实现将函数中的参数对象构建出来,传递给它。这样就可以完成依赖注入。
4.但是问题来了。我们知道在js的发布上线的时候,我们为了减小代码的体积,减轻网络传输的压力,会代码进行压缩处理,压缩的过程中,会删除注释和多余的空格,更高级的压缩会替换代码中的变量,将代码中的变量都替换成最短的变量名。这样函数依赖的对象名也就被破坏掉了。
5.解决方法:
a.换种方式写,将依赖用字符串标出,显试的指明依赖对象:之前的currentTime这样写:
angular.module('myService',['ng']);angular.module('myService').factory('currentTime',['$window',function($window){ return function(){ var now = $window.Date(); return now; }; }]);
由于代码中的'$window'是一个字符串常量,在压缩中是不会被替换的。
b.找angular专用的代码压缩工具来压缩代码
四、angular中是如何实现依赖注入的
依赖注入的功能主要由源代码包中./src/auto/injector.js完成。
先上代码,直接在代码中注释
//处理匿名函数,有参数的函数返回‘function(参数)’
//没有参数的函数,返回‘fn’
//这一段有大量的正则表达式,请自行查阅,有机会我会写一篇《高效的正则表达式》的博文。
function anonFn(fn) { // For anonymous functions, showing at the very least the function signature can help in // debugging. var fnText = fn.toString().replace(STRIP_COMMENTS, ''), args = fnText.match(FN_ARGS); if (args) { return 'function(' + (args[1] || '').replace(/[\s\r\n]+/, ' ') + ')'; } return 'fn'; } //这个函数的名字叫“注释者”,功能却是返回函数的的参数列表 function annotate(fn, strictDi, name) { var $inject, fnText, argDecl, last; if (typeof fn === 'function') { //函数使用传统的方式定义的,function(xx){xxx} if (!($inject = fn.$inject)) { $inject = []; if (fn.length) { if (strictDi) { if (!isString(name) || !name) { name = fn.name || anonFn(fn); } throw $injectorMinErr('strictdi', '{0} is not using explicit annotation and cannot be invoked in strict mode', name); } fnText = fn.toString().replace(STRIP_COMMENTS, ''); //删除函数中的注释 argDecl = fnText.match(FN_ARGS); //匹配出函数的函数字符串 forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg) { arg.replace(FN_ARG, function(all, underscore, name) { $inject.push(name); }); }); } fn.$inject = $inject; } } else if (isArray(fn)) { //函数是以数组的方式定义的,['xx',function(xx){...}] last = fn.length - 1; assertArgFn(fn[last], 'fn'); $inject = fn.slice(0, last); } else { assertArgFn(fn, 'fn', true); } return $inject; }
下面看angular"内部注入器"的代码:
// 内部注入器//这个函数是一个工厂方法,将生成一个“内部注入器”对象 function createInternalInjector(cache, factory) { function getService(serviceName, caller) { //根据名字获取服务,如果服务不存在,尝试使用factory(serviceName, caller)创建服务 if (cache.hasOwnProperty(serviceName)) { if (cache[serviceName] === INSTANTIATING) { throw $injectorMinErr('cdep', 'Circular dependency found: {0}', serviceName + ' <- ' + path.join(' <- ')); } return cache[serviceName]; } else { try { path.unshift(serviceName); cache[serviceName] = INSTANTIATING; return cache[serviceName] = factory(serviceName, caller); } catch (err) { if (cache[serviceName] === INSTANTIATING) { delete cache[serviceName]; } throw err; } finally { path.shift(); } } } function invoke(fn, self, locals, serviceName) { //调用函数 if (typeof locals === 'string') { serviceName = locals; locals = null; } var args = [], $inject = createInjector.$$annotate(fn, strictDi, serviceName), //前面讲过,这里取出的是函数的参数列表,而参数代表了函数依赖的对象 length, i, key; for (i = 0, length = $inject.length; i < length; i++) { //根据函数列表,构建函数所依赖的的服务(对象) key = $inject[i]; if (typeof key !== 'string') { throw $injectorMinErr('itkn', 'Incorrect injection token! Expected service name as string, got {0}', key); } args.push( locals && locals.hasOwnProperty(key) ? locals[key] : getService(key, serviceName) ); } if (isArray(fn)) { fn = fn[length]; } // http://jsperf.com/angularjs-invoke-apply-vs-switch // #5388 return fn.apply(self, args); //调用函数,到此完全符合我讲的的依赖注入原理 } //实例化,用户angular内部实例化controller、service、provider等 function instantiate(Type, locals, serviceName) { // Check if Type is annotated and use just the given function at n-1 as parameter // e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]); // Object creation: http://jsperf.com/create-constructor/2 var instance = Object.create((isArray(Type) ? Type[Type.length - 1] : Type).prototype || null); var returnedValue = invoke(Type, instance, locals, serviceName); return isObject(returnedValue) || isFunction(returnedValue) ? returnedValue : instance; } //“内部注入器”对象 return { invoke: invoke, //1.函数调用方法 instantiate: instantiate, //2.内部实例化方法 get: getService, //3."服务对象"获取方法 annotate: createInjector.$$annotate, //获取参数列表的方法 has: function(name) { return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name); } }; } } createInjector.$$annotate = annotate;
到此,可以理解angular的依赖注入式如何完成的。
下期预告:angular源码分析:angular中各种常用函数,比较省代码的各种小技巧
http://www.cnblogs.com/web2-developer/p/angular-2.html
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- AngularJS 依赖注入 深入理解
AngularJS 依赖注入 什么是依赖注入? 是一种软件设计模式,在这种模式下,一个或更多的依赖(或服务)被注入(或者通过引用传递)到一个独立的对象(或客户端)中,然后成为了…...
2024/4/21 4:56:56 - 原创:Javascript DI!Angular依赖注入的实现原理
DI是Angular的特色功能,而在Angular 2.0的计划中,DI将成为一个独立的模块,参见 https://github.com/angular/di.js 这意味着它也有机会被用于nodejs等技术中,其他前端框架也完全有机会使用它。 DI简介 对于后端程序员,…...
2024/4/21 4:56:54 - Angular08 依赖注入
1 angular应用中依赖注入的工作原理 技巧01:在模块级别进行注册时所有在应用级别的组件都可以使用,因为主模块会导入其他模块,所以在模块中注入就相当于在主模块进行注入操作;懒加载的模块除外 技巧02:在模块的根组件注…...
2024/4/21 4:56:53 - [译] 关于 Angular 依赖注入你需要知道的
如果你之前没有深入了解 Angular 依赖注入系统,那你现在可能认为 Angular 程序内的根注入器包含所有合并的服务提供商,每一个组件都有它自己的注入器,延迟加载模块有它自己的注入器。 但是,仅仅知道这些可能还不够呢? …...
2024/4/21 4:56:53 - angularjs 依赖注入原理与实现
在用angular依赖注入时,感觉很好用,他的出现是 为了“削减计算机程序的耦合问题” ,我怀着敬畏与好奇的心情,轻轻的走进了angular源码,看看他到底是怎么实现的,我也想写个这么牛逼的功能。于是就模仿着写了…...
2024/4/21 4:56:51 - 掌握Angular2的依赖注入
我们这一篇文章还是以QuickStart项目为基础,从头开始讲解怎么在Angular2中使用依赖注入,如果你按照本篇文章中讲解的示例亲自走一遍的话,你一定能够掌握如何在Angular2中使用依赖注入.好,废话不多说,开始我们今天的旅行吧! 我们首先将项目中的内联模板替换为一个模板文件,使用…...
2024/4/21 4:56:51 - Javascript DI!Angular依赖注入的实现原理
JavaScript中实现DI的原理 在JavaScript中实现DI,看起来难,实际上原理很简单,它的核心技术是Function对象的toString()。我们都知道,对一个函数对象执行toString(),它的返回值是函数的源码,知道了这一点&am…...
2024/4/21 4:56:49 - Angular开发必备插件一览表
1. Angular-cli 初始化,开发,构建和维护Angular应用程序的命令行界面工具。 安装 npm install -g angular/cli 命令列表 ng help ng new my-first-project cd my-first-project ng serve 多模块创建 默认创建单模块 创建多模块 ng new my-workspa…...
2024/4/20 19:39:44 - angular开发的IDE环境搭建
试了两种,Visual Studio 2015 和 Visual Studio Code,遇到问题记录下,以备之后忘记了,有据可查1.Visual Studio 2015搭建参照下文,但最后我卡在了编译上,编译运行卡死,发现不能加载app下的.ts文…...
2024/4/20 19:39:43 - 几款移动跨平台App开发框架比较
海豚精灵:https://www.whhtjl.com;优课GO:https://mgo.whhtjl.com 整理目前流行的跨平台WebApp开发技术的特点,仅供参考。 每个框架几乎都包含以下特性: 使用 HTML5 CSS JavaScript 开发;跨平台重用代…...
2024/4/20 19:39:42 - 02 ionic+angular开发webapp笔记
Angular js 的特性: MVC 模块化和依赖注入 双向数据绑定 指令和ui控件 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、…...
2024/4/20 19:39:41 - Angular8 开发(二)
前面已经说到了基本的集成可开发准备工作,Angular 开发(一)。接下来开始逻辑部分的编写 目录大纲段子列表获取,路由跳转详情获取段子详情音乐列表搜渲染搜索的音乐列表和播放音乐总结段子列表获取,路由跳转详情 新建段…...
2024/4/21 4:56:48 - angular 开发项目
pc端 angular 5 浏览器支持 IE10 google浏览器 火狐浏览器 移动端 angular5 Ionic3 什么是混合开发? 简单来说,就是在开发移动应用中同时使用Native和Web的开发方式。 什么是Ionic3框架? Ionic3框架是一个混合开发框架,其本身…...
2024/4/26 11:51:09 - JAVAWeb对ajax中get与post的使用
JAVAWeb对ajax中get与post的使用 01.使用背景及ajax的介绍 02.ajax的一些属性 03.使用案例 03.1.基本介绍 03.2.代码详解 03.3.代码运行结果04.总结JAVAWeb对ajax中get与post的使用01.使用背景及ajax的介绍在进行javaWeb的开发中难免会遇到异步请求的情况,为了使网站局部的信息…...
2024/4/21 4:56:47 - angular开发快捷操作
创建项目 ng new my-app快速创建新组件: ng generate component views/user创建service ng g service services/my-service如果缺少依赖rxjs npm install rxjs-compat //需重启生效快速自定义管道文件(pipe) ng g p sexReform...
2024/4/21 4:56:46 - 十款移动APP开发框架
十款移动APP开发框架: 1.jquery mobile框架 2.bootstrap框架 3.ionic框架 4.Mobile Angular UI框架 5.Intel XDK框架 6.Appcelerator Titanium框架 7.Sencha Touch框架 8.Kendo UI框架 9.PhoneGap框架 10.mui框架 1.jquery mobile框架 jQuery Mobile是jQuery 在手机上和平板设备…...
2024/4/21 4:56:44 - AngularJS事件
一.事件 1.ng-click 指令允许当一个元素被点击后执行指定的表达式。 <input type"button" value"add-count" ng-click"countcount1" ng-init"count0;" />{{count}} //鼠标单击事件,不用多说 2.ng-dblclick ng-db…...
2024/4/21 4:56:43 - ag-grid 学习笔记五:ag-grid事件(onRowClicked行点击事件、onCellClicked单击单元格事件、onCellDoubleClicked双击单元格事件、全部事件列表)
一 onRowClicked行点击事件 此事件发生在点击表格行的时候,事件写在gridOptions下。 onRowClicked: function (event) {//event.data 选中的行内数据,event.event 为鼠标事件,等其他。可以log自己看一下console.log(a row was clicked, event…...
2024/5/2 19:27:07 - handsontable 事件汇总
Hook插件afterChange (changes: Array, source: String):1个或多个单元格的值被改变后调用 changes:是一个2维数组包含row,prop,oldVal,newVal4个属性。 source:其值为一个字符串,值可以为&…...
2024/4/25 12:12:19 - SE5004L-R 功率检测器的5 GHz,26dBm功率放大器
具有功率检测器的5 GHz,26dBm功率放大器 产品描述 SE5004L是一款5GHz功率放大器,功率很高无线LAN应用的线性电源。 该SE5004L采用功率检测器封闭循环监测和控制输出功率。 SE5004L提供高度集成的简化设计,提供更快的上市时间和更高的时间应用板产量。 装置整合输入匹配,阶段…...
2024/4/21 4:56:40
最新文章
- GraphQL在前端开发中的实践与性能优化:超越RESTful API
GraphQL作为一种新型的API查询语言,以其灵活的查询能力和高效的资源获取机制,在前端开发中扮演了重要角色。相较于传统的RESTful API,GraphQL允许客户端指定所需的数据结构,从而避免了过载和不足的问题,提高了数据传输…...
2024/5/3 23:27:25 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 宁波银行交出2023年成绩单:高成长高质量,优质服务夯实金字招牌
撰稿 |多客 来源 | 贝多财经 4月9日,宁波银行(SZ:002142)交出了2023年的业绩答卷。透过财报不难发现,该行在业绩表现、资产质量、创新趋势、风控能力等方面均展现出了强韧的成长性,无愧城商行“优等生”之名。 进入2…...
2024/4/30 2:16:39 - 【超简单】基于PaddleSpeech搭建个人语音听写服务
一、【超简单】之基于PaddleSpeech搭建个人语音听写服务 1.需求分析 亲们,你们要写会议纪要嘛?亲们,你们要写会议纪要嘛?亲们,你们要写会议纪要嘛?当您面对成吨的会议录音,着急写会议纪要而不得不愚公移山、人海战术?听的头晕眼花,听的漏洞百出,听的怀疑人生,那么你…...
2024/5/2 17:17:32 - 腾讯云轻量服务器流量不够用了会怎么样?
腾讯云轻量应用服务器是限制月流量的,如果当月流量不够用了,流量超额了怎么办?流量超额后,需要另外支付流量费,如果你的腾讯云账号余额,就会自动扣除对应的流量费,如果余额不足,轻量…...
2024/5/1 13:01:36 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/1 17:30:59 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/2 16:16:39 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/3 23:10:03 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/2 15:04:34 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/2 9:07:46 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) 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 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在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