尤雨溪是如何做 Vue.js 自动化发布的?
本文是读者@NewName 投稿,看了若川推荐的vuejs如何发布的源码(200余行),并成功写了一个小工具。推荐的当晚看到挺晚,这执行力这努力程度超过很多人啊。
人类高质量前端祖师爷镇楼
前言:第一次看源码,感谢我川哥提供合适题材,给予细心指导。感觉学习源码真的很有帮助,我第一次就品尝到甜头了,可以借鉴(抄袭)源码的思想解决实际的问题,真好啊。本人着实菜鸟一枚,也不会写作,把学习的笔记记录一下而已。
1. 准备工作和主要精神
1.源码地址:https://github1s.com/vuejs/vue-next/blob/HEAD/scripts/release.js
2.源码主旨内容:vuejs 是如何发布
3.要思考学完了可以应用的地方:
1.比如学完这个源码,优化自己项目的发布流程
————真有点想法耶:
我们公司目前的前端发版本流程中有许多的git命令 ,这些git命令我可以用脚本的方式运行,借鉴源码中的run方法:
const run = (bin, args, opts = {}) =>execa(bin, args, { stdio: 'inherit', ...opts })
目前已经写了(CV)一个工具脚本,优化了我们公司前端项目发预发布版本的流程,详见第六部分。
4.读源码特别要注意:
先看懂大局呀~ 主线是main函数 先看懂大概 然后不懂的再查
2. 从main函数开始看
将 main
函数中主要代码梳理一下,总体流程如下图所示:
2.1 版本号验证相关流程 :40 - 77行
40行:获取版本号
44 -49行 :如果版本号不存在则问是要升级大版本、小版本、 补丁版本 还是自定义
52-59 行 :如果用户选择的自定义则获取自定义的版本
65-67行:检查版本号是否合法
69-73行:问是否确定要发布版本
55-77: 如果选择否 main函数执行结束, 返回
2.2 发布之前的测试:80-86行
2.3 更新依赖的版本号:88-90行
2.4 运行build命令 :93-101行
2.5 运行日志命令 :104行
2.6 提交代码:106-113行
2.7 运行发布命令 :115-119 行
2.8 新的版本push到git:121-125行
2.9 提示跳过更新的包:131-139行
3. 一些变量和函数的定义细节
3.1 发布之前测试:
80-86行:
//如果没有skipTests 跳过测试 并且没有 isDryRun(空跑?)则运行测试
step('\nRunning tests...')if (!skipTests && !isDryRun) {//使用jest , 清除缓存await run(bin('jest'), ['--clearCache'])//yarn test await run('yarn', ['test', '--bail'])} else {console.log(`(skipped)`)}
3.2 构建所有的包
93—101行:
//其实是运行yarn build 命令
await run('yarn', ['build', '--release'])
3.3 运行日志命令
104行:运行 yarn 的log命令
await run(`yarn`, ['changelog'])
//changelog定义在package.json 的 npm scripts 中:
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",//这里使用到了conventional-changelog,见第五部分:使用的依赖
3.4 提交代码
106-113行:git版本管理相关
//判断文件是否有变化,如果有变化则提交到git
const { stdout } = await run('git', ['diff'], { stdio: 'pipe' })if (stdout) {step('\nCommitting changes...')await runIfNotDry('git', ['add', '-A'])await runIfNotDry('git', ['commit', '-m', `release: v${targetVersion}`])} else {console.log('No changes to commit.')}
3.5 运行发布命令
115-119行: 发布
// publish packagesstep('\nPublishing packages...')for (const pkg of packages) {await publishPackage(pkg, targetVersion, runIfNotDry)}
//publishPackage的定义在175-230行:
async function publishPackage(pkgName, version, runIfNotDry) {// 如果某个包要跳过则直接返回if (skippedPackages.includes(pkgName)) {return}//获取路径和内容const pkgRoot = getPkgRoot(pkgName)const pkgPath = path.resolve(pkgRoot, 'package.json')const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'))//如果是私有的则返回if (pkg.private) {return}// For now, all 3.x packages except "vue" can be published as// `latest`, whereas "vue" will be published under the "next" tag.// 定义一下发布的标记 (打tag)let releaseTag = nullif (args.tag) {releaseTag = args.tag} else if (version.includes('alpha')) {releaseTag = 'alpha'} else if (version.includes('beta')) {releaseTag = 'beta'} else if (version.includes('rc')) {releaseTag = 'rc'} else if (pkgName === 'vue') {// TODO remove when 3.x becomes defaultreleaseTag = 'next'}// TODO use inferred release channel after official 3.0 release// const releaseTag = semver.prerelease(version)[0] || null// 执行发布: 运行yarn的发布命令step(`Publishing ${pkgName}...`)try {await runIfNotDry('yarn',['publish','--new-version',version,...(releaseTag ? ['--tag', releaseTag] : []),'--access','public'],{cwd: pkgRoot,stdio: 'pipe'})console.log(chalk.green(`Successfully published ${pkgName}@${version}`))} catch (e) {if (e.stderr.match(/previously published/)) {console.log(chalk.red(`Skipping already published: ${pkgName}`))} else {throw e}}
}
3.6 更新依赖的细节
88-90: 更新所有的依赖
updateVersions(targetVersion)
//updateVersions 是定义的一个更新版本的函数,里面调用了 updatePackage函数
function updateVersions(version) {// 1. update root package.jsonupdatePackage(path.resolve(__dirname, '..'), version)// 2. update all packagespackages.forEach(p => updatePackage(getPkgRoot(p), version))
}
//packages的定义在第16行;
//updatePackag在157行:大概意思是找到路径下的package.json文件然后读取文件内容,转成对象,更新版本,再写回文件。
function updatePackage(pkgRoot, version) {const pkgPath = path.resolve(pkgRoot, 'package.json')const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'))pkg.version = versionupdateDeps(pkg, 'dependencies', version)updateDeps(pkg, 'peerDependencies', version)fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n')
}
//这里用到的updateDeps在 159-173行定义:
function updateDeps(pkg, depType, version) {const deps = pkg[depType]if (!deps) returnObject.keys(deps).forEach(dep => {//大概含义是检查依赖,如果其中有vue则提示并且替换版本。if (dep === 'vue' ||(dep.startsWith('@vue') && packages.includes(dep.replace(/^@vue\//, '')))) {console.log(chalk.yellow(`${pkg.name} -> ${depType} -> ${dep}@${version}`))deps[dep] = version}})
}
4. 总体的流程总结回顾
将 main
函数中主要代码梳理一下,总体流程如下图所示:
5. 使用的依赖
5.1 minimist
const args = require('minimist')(process.argv.slice(2))
minimist轻量级的命令行参数解析引擎
https://blog.csdn.net/fangxuan1509/article/details/107469465
https://www.npmjs.com/package/minimist
5.2 chalk
const chalk = require('chalk')
chalk是一个颜色的插件
https://blog.csdn.net/sqrtsix/article/details/76615630
https://www.npmjs.com/package/chalk
5.3 semver
const semver = require('semver')
Semver是一个专门分析Semantic Version(语义化版本)的工具,“semver”其实就是这两个单词的缩写。Npm使用了该工具来处理版本相关的工作。
语义化版本扫盲 https://segmentfault.com/a/1190000014405355
https://www.npmjs.cn/misc/semver/
5.4 enquirer
const { prompt } = require('enquirer')
命令行提示的?
https://www.npmjs.com/package/enquirer
5.5 execa
const execa = require('execa')
execa是可以调用shell和本地外部程序的javascript封装。会启动子进程执行。支持多操作系统,包括windows。如果父进程退出,则生成的全部子进程都被杀死。
http://abloz.com/tech/2018/08/21/nodejs-execa/
https://www.npmjs.com/package/execa
5.6 yarn的相关命令
https://yarn.bootcss.com/docs/getting-started/
5.7 conventional-changelog
在约定式提交的基础上来自动生成changelog
https://blog.csdn.net/weixin_34326179/article/details/91382865
https://www.npmjs.com/package/conventional-changelog
6. 应用:优化发“预发布版本”的流程
6.1 问题描述
“预发布版本”是我们发正式版本之前的一个验证版本,目前我们公司前端项目发“预发布版本”的时候要通过如下图所示的流程,这里面有很多操作git的命令,受阅读源码启发,我想写一个工具脚本,把这些命令变成自动执行的方式,需要的信息只需要开发者输入或者选择即可。
其中生成tag的时候需要根据tag命名规范来生成。下图中 12 为固定值 ,20代表年份,30代表是一年中的第几周,01代表第几次发版。
6.2 解决方案
所以我需要写的脚本中就需要做这几件事情:
(1)要获取当前年份,当前第几周:这两个值用JS基本代码就ok,
(2)需要和开发者交互获取第几次发版和服务名:可以使用 release.js 中使用的 依赖:enquirer;
(3)需要运行git命令:release.js 中使用的 依赖:execa,以及定义的 run()方法。
(4)如果控制台中要高亮提示信息则使用依赖:chalk ,当然这个是可选的
6.3 具体实现
6.3.1 首先项目根目录下新建scripts文件夹,然后新建 release.js文件
6.3.2 安装依赖
npm install chalk --save-dev
npm install execa --save-dev
npm install enquirer --save-dev
6.3.3 写代码
const chalk = require('chalk')
const execa = require('execa')
const {prompt
} = require('enquirer')const step = msg => console.log(chalk.cyan(msg))const run = (bin, args, opts = {}) =>execa(bin, args, {stdio: 'inherit',...opts})async function main() {console.log('欢迎使用发版小助手脚本')step('\n验证是否提交代码...')const { yes } = await prompt({type: 'confirm',name: 'yes',message: `确定已经提交代码并将代码push到develop分支了吗?`})if (!yes) {return}// 切换到 develop 分支,拉取最新代码await run('git', ['checkout', 'develop'])await run('git', ['pull', 'origin', 'develop'])// 切换到 release 分支,拉取最新代码await run('git', ['checkout', 'release'])await run('git', ['pull', 'origin', 'release'])// 本地 release 分支合并 develop 分支代码await run('git', ['merge', 'develop'])// 合并完成后,推送到远程 release 分支await run('git', ['push', 'origin', 'release'])// 以下逻辑为拼写tag号,打tag用// 获取当前年份后两位const yearLastTwoBit = getLastTwoBitYear()console.log(yearLastTwoBit)// 获取当前是一年中的第几周const currentWeek = theWeek()console.log(currentWeek)// 本次的版本号const targetVersion = (await prompt({type: 'input',name: 'version',message: '这次是本周第几次发版?(请输入数字)',})).versionconsole.log(targetVersion)// 前端服务名字const serviceName = (await prompt({type: 'input',name: 'serviceName',message: '请输入这个前端服务名字?(例如 fe_beg)',})).serviceNameconsole.log(serviceName)// 拼接tag名 const tagName = `Cloud_R-12.${yearLastTwoBit}.${currentWeek}.${targetVersion > 10 ? targetVersion : `0${targetVersion}`}-${serviceName}`// 拼接注释const comment = `${serviceName}服务${currentWeek}周/迭代第${targetVersion}次版本发布`// 本地打 Tag,生成版本await run('git', ['tag', tagName, '-m', comment])// 推送 Tag 到远程代码库,触发构建await run('git', ['push', '--tags'])console.log('稍等片刻,即可完成预发布环境版本发布,详细查看Jenkins')// 重新切换到develop分支await run('git', ['checkout', 'develop'])
}// 获取当前年份后两位
function getLastTwoBitYear() {const date = new Date()const currentYear = date.getFullYear().toString()return currentYear.substr(currentYear.length - 2, 2)
}function theWeek() {var totalDays = 0;now = new Date();var days = new Array(12);days[0] = 31;days[2] = 31;days[3] = 30;days[4] = 31;days[5] = 30;days[6] = 31;days[7] = 31;days[8] = 30;days[9] = 31;days[10] = 30;days[11] = 31;//判断是否为闰年,针对2月的天数进行计算if (Math.round(now.getYear() / 4) == now.getYear() / 4) {days[1] = 29} else {days[1] = 28}if (now.getMonth() == 0) {totalDays = totalDays + now.getDate();} else {var curMonth = now.getMonth();for (var count = 1; count <= curMonth; count++) {totalDays = totalDays + days[count - 1];}totalDays = totalDays + now.getDate();}//得到第几周var week = Math.round(totalDays / 7);return week;
}
main().catch(err => {console.log(err)
})
6.3.4 然后在package.json 中增加一个npm script:
"release": "node scripts/release.js",
6.3.5 测试
运行命令:
npm run release
下图为脚本运行效果:
小工具脚本运行还算顺利,只需要运行1次命令,确认1次,输入2次,避免了输入很多git命令。还有就是发完“预发布”之后,我们很容易忘了切回develop分支,这个小工具脚本最后把代码切到了develop分支,可以减少不必要的麻烦。
当然这里,我没有考虑许多的异常case , 健壮性不太好,有待优化。
最后我非常感谢川哥,细心耐心给予我指导,解答我的问题。川哥人好又心善,勤勉又聪慧,实在是我学习的楷模~
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 遇见Vue.js
一、Vue.js是什么 Vue.js不是一个框架----它只聚焦视图层,是一个构建数据驱动的Web界面的库。Vue.js通过简单的API提供高效的数据绑定和灵活的组件系统。 Vue.js的特性如下。 1.确实轻量 Vue.js的体积是非常小的,而且他不依赖其他基础库。 2.数据绑定 对…...
2024/4/15 16:05:44 - 【vue.js】windows下安装vue.js
windows下搭建vue开发环境 Vue.js是一套构建用户界面的 “渐进式框架”。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。2016年,Vue同A…...
2024/4/15 10:31:04 - Angular、React、Vue.js 等 6 大主流前端框架都有什么优缺点?
无意中看到的一篇文章,分享一下。后期有更深理解还会补充 链接:oschina.net/translate/web-frameworks-conclusions 原文:sitepen.com/blog/2017/11/10/web-frameworks-conclusions/ 译者:凉凉_, wilde, 透过树叶的光等 要不要使用…...
2024/4/14 4:30:24 - Vue.js__快速入门
Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的。相比于Angular.js,Vue.js提供了更加简洁、更易于理解的API,使得我们能够快速地上手并使用Vue.js。 本文摘自:http://www.cnblogs.com/keepfool/p/…...
2024/3/31 22:39:43 - Vue.js--60分钟快速入门
目录 Vue.js介绍 MVVM模式 Hello World示例 双向绑定示例 Vue.js的常用指令 v-if指令 v-show指令 v-else指令 v-for指令 v-bind指令 v-on指令 v-bind和v-on的缩写 综合示例 总结 Vue.js介绍 Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱…...
2024/4/17 22:45:54 - 前后端分离以及Vue.js入门【环境搭建】(以后端开发者角度来讲) -------健康之家
目录 前后端不分 前后端分离 Vue简介 SPA 基本环境搭建 Vue 项目结构介绍 WebStorm 中启动Vue 项目编译 vue-cli3 构建vue项目 Vue的入门其实不难,Vue 的资料都是中文的,把 Vue.js 官网的资料从头到尾浏览一遍该懂的基本就懂了。https://cn.vuej…...
2024/4/17 5:21:56 - 8.4.3 封装Vue.js组件库
本文为拉勾网大前端高薪训练营第一期笔记 CDD (Component-Driven Development) 自下而上从组件级别开始,到页面级别结束 CDC的好处 组件在最大程度被复用并行开发可视化测试 组件的边界情况 root: 获取根组件 parent: 获取父组件 children: 获取…...
2024/4/15 18:00:24 - Vue.js快速入门
Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的。 相比于Angular.js,Vue.js提供了更加简洁、更易于理解的API,使得我们能够快速地上手并使用Vue.js。 如果你之前已经习惯了用jQuery操作DOM,学习Vu…...
2024/4/7 16:58:46 - Vue.js——60分钟快速入门
Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的。相比于Angular.js,Vue.js提供了更加简洁、更易于理解的API,使得我们能够快速地上手并使用Vue.js。 本文摘自:http://www.cnblogs.com/keepfool/p/5…...
2024/4/16 22:24:16 - Angular中的状态变化检测
前端的状态变化检测的介绍文章http://teropa.info/blog/2015/03/02/change-and-its-detection-in-javascript-frameworks.htmlhttps://blog.thoughtram.io/angular/2016/02/22/angular-2-change-detection-explained.html 概念 状态变化检测,目的是让UI上呈现的内容…...
2024/4/18 8:16:49 - Angular模型
1、变量绑定 <html> <head> <meta charset"utf-8"> <script src"http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script> </head> <body><div ng-app"myApp" ng-control…...
2024/4/14 4:31:10 - (精华2020年6月21日更新)Angular实战篇 ngrx/store状态管理的使用
首先自然是安装相关包 yarn add ngrx/store定义statu.ts export interface TaskList {id: number;text: string;completed: boolean; }//初始状态 export const initCount 0; //state export const TASKSAll: TaskList[] [{ id: 1, text: C#, completed: false },{ id: 2…...
2024/4/14 4:31:10 - 深入理解 Angular 变化检测(change detection)
引言 本文分享一些讲解Angular Change Detection的文章,并指出其中有意思的内容,以及自己的一些总结和引申。 Angular Change Detection Explained by thoughtram change detection的基本任务:用进程内的状态(Component中的数据&a…...
2024/4/14 4:30:50 - Angular 多语言国际化配置
安装依赖npm install @ngx-translate/core –-save npm install @ngx-translate/http-loader --save配置国际化// app.module.ts// 加载国际化资源文件 export function HttpLoaderFactory(http: HttpClient) {return new TranslateHttpLoader(...
2024/3/15 12:32:27 - npm安装Angular错误:npm ERR! cb() never called!;npm ERR! C:\Users\10278859\AppData\Roaming\npm-cache\
npm安装Angular出现如下错误: 在终端输入: npm config set registry http://registry.cnpmjs.org/ 报错: 继续输入如下命令: npm config set strict-ssl false npm install -g supervisor npm install 输出为: npm …...
2024/4/14 23:01:48 - ‘Angular项目中去掉url中的#’问题解决
使用AngularJS的朋友都应该了解,AngularJS框架定义了自己的前端路由控制器,通过不同URL实现单面(ng-app)对视图(ng-view)的部署刷新,并支持HTML5的历史记录功能,详细介绍可以参考文章:AngularJS路由和模板。 对于默认…...
2024/3/15 12:32:23 - angular.js (一)
# 流行框架第一天:Angular简介和入门## 开放性讨论- 为什么这几年前端行业好像突然间多了那么多东西 我们现在做的网站不再是简简单单的呈现静态页面,而是一个web应用程序。 一大批后端程序员转型为前端,大大提高了前端的水准。## Angular简介…...
2024/4/14 4:30:50 - 使用WordPress和Angular.js创建单页应用程序
您将要创造的 与Angular.js框架一起工作是快速而有意义的,并且与WordPress结合使用,可以在很短的时间内创建一个非常好的SPA(单页应用程序)。 借助WordPress提供的所有CMS控件和插件,这是一个有趣的捷径。 设置主题 我…...
2024/4/18 13:15:06 - Angular.js
文章来自:源码在线https://www.shengli.me/javascript/174.html 首先要有个node.js 查看版本信息:cmd中输入 node -vnpm -v 安装: npm i -g angular/cli 用cli命令建立 ng7demo ng new projectName 这里前面我用ng7_demo的时候报错 进入文…...
2024/4/14 4:30:55 - Angular.js学习之路一:使用angular.js实现todomvc
需要的知识 html、js、初步了解angularjs 熟悉npm、git的操作 起步 在github上给我们提供了一个todomvc的模板,我们可以clone下来,使用安装npm,安装git(具体安装不在描述,请自行百度) 在本地新建文件夹todomvc…...
2024/4/18 1:27:00
最新文章
- 【QT教程】QML Web多媒体处理
QML Web多媒体处理 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看 免…...
2024/4/18 21:48:30 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - C# 构建可定时关闭的异步提示弹窗
C# 构建可定时关闭的异步提示弹窗 引言1、调用接口的实现2、自动定时窗口的实现 引言 我们在最常用最简单的提示弹框莫过于MessageBox.Show( )的方法了,但是使用久了之后,你会发现这个MessageBox并不是万能的,有事后并不想客户去点击&#x…...
2024/4/16 6:27:38 - N5171B是德科技N5171B信号发生器
181/2461/8938产品概述: N5171B EXG 射频模拟信号发生器具有最佳的 EXG,旨在满足您对组件参数测试和接收器校准的信号需求。其出色的硬件性能可提供更快的吞吐量、更长的正常运行时间以及极好的准确性和可重复性。 Agilent / HP N5171B EXG 射频模拟信…...
2024/4/18 7:52:24 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/18 0:33:31 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/17 20:29:59 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/18 9:45:31 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/17 2:33:17 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/17 7:50:46 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/18 3:56:01 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/18 3:56:04 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/18 3:55:30 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/18 3:55:54 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/18 3:55:45 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/17 21:50:30 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/15 13:53:08 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/15 9:16:52 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/18 9:24:29 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/18 3:56:18 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/18 3:55:57 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/18 3:55:50 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/15 23:28:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/18 3:56:20 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/18 3:56:11 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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