1.有什么好的赞呗赞科幻作品
2.如何学习 Windows 编程?
3.如何用c输入字符并输出其ASCII码?
4.你还不会写vite插件吗?没关系,我教你啊!源码
有什么好的官网科幻作品
黑客帝国,绝对经典让人眼前和思维都一亮而且场面超级炫酷的赞呗赞科幻大片,开创了子弹剪切特效,源码动作加上科幻深邃思维,官网ATV陈真源码必须强烈推荐。赞呗赞
十二只猴子,源码在穿越时空的官网思维上做的挺严密的,故事也很让人动情,赞呗赞剧情挺棒。源码很多**迷都推荐这一部**。官网
异次元骇客,赞呗赞可以说,源码它在思维上比黑客帝国还更胜一筹!官网绝对让你惊叹让你拍案叫绝!土星奖最佳科幻**提名。没有很酷炫的场面,一层一层的构思已经足够震撼你。
移魂都市,一开始就让你觉得很迷茫很吸引人,故事一层层展开,然后开始清晰,整部**色调很黑,到最后有光芒的时刻,会是完全不一样的感觉。值得一看。
第九区,非常深刻的一部科幻**。绝对算得上是经典之作。科幻的故事背景就让人眼前一亮,加上故事情节对现实社会一些丑恶现象深刻的讽刺,让人移情其中,惊叹,也是必看之作。
源代码,也是构思非常巧妙的一部**,到最后一刻真的非常动人,让人感觉到幸福。
感官游戏,挺少人知道的一部**吧,但我强力推荐。构思的未来的游戏世界,环环相扣,绝对也能让你惊叹。一个细节让我回想时很惊讶,年的**,最后似乎所有人拿着智能手机还是平板电脑在玩,那时还没有吧?!回想了一下那个情节,我觉得特别震惊,年竟然能预测到智能手机!现在还不清楚什么情况。
少数派报告,导演史蒂文·斯皮尔伯格,主演汤姆克鲁斯,剧本来自菲利普K迪克,无疑的好科幻**,不用评论太多了。自己去看吧。
盗梦空间,诺兰著名科幻经典**,众所周知的,不用评论了。
银翼杀手,很多人认为这部**是科幻**的top1,其中思考的东西一直值得我们思考,但是我要说的是菲利普K迪克的原著比**好看几倍!!**特效很棒,但是故事内核远远不及原著!建议看原著!负3的源码是什么意思!!
云图,评价分化挺大的**,但是它六个小故事都是非常棒的,听着云图六重奏(真的觉得挺好听的钢琴曲),看云图人类不同时期的一些小故事,还是多少会有一些体会的。
星际穿越,大神诺兰的**,豆瓣评分9.1,不用介绍了吧。(很喜欢那个都是海洋的星球~虽然海啸。。。)
异形系列,绝逼经典科幻**,看看它的粉丝有多少你就知道了。(异形前传普罗米修斯也可以看看)
;终结者系列,去看看有多少人期待终结者5吧。。。肯定值得看。
彗星来的那一夜,小成本科幻**,但是真的很烧脑!很刺激很有意思!绝对脑洞大开!推荐。
I型起源,不是说这部**是多么好的科幻**,但是!它讨论了宗教与科学的关系,一些东西不是唯一的。作为科幻迷,怎么能错过这个讨论的**呢?
回到未来,老的系列经典,我当时随便看了几眼就被吸引住了。<img 无姓之人,到最后就发现整部**是多么宏大,关于一生的**,很推荐,值得一看。
;冒名顶替,剧情紧凑,巧妙到让你最后一秒都深陷其中,菲利普原著。
香草的天空,汤哥当年从西班牙买下了这个剧本!可见剧本魅丽有多大。主要与爱情、人生有关的科幻**。背景设定吸引人。
蝴蝶效应,很多人奉为经典的系列。环环相扣的蝴蝶效应都从一件事开始,第一部和第三部比较好看。
人类之子,很严肃的一部科幻**,也是可能的未来,土星奖最佳科幻影片。
;千钧一发,关于基因歧视的,冲破障碍,佳片有约推荐过,详细评价可以看看佳片有约。
侏罗纪公园,史蒂文·斯皮尔伯格的作品,年就有那样的特效特技,让人惊叹。货车来苏州下高速要货源码
A.I.人工智能,对人工智能的探讨很深入,机器人的情感,也很动人,经典之作。
E.T.外星人,真的是一个美丽童话,不能错过的经典。
;太空漫游,硬科幻的代表作。超前的科幻想象!
星球大战,小时候看的时候觉得特别炫酷!的确是**史上的里程碑。
超时空接触,很多人心中最好的科幻片。绝对是经典之作。
;攻壳机动队, 引用一位朋友的评价,相当部分在后来科幻片中出现的概念和思考,在这部探讨人、机、社会、人工智能关系的**中,已经走得较远了。
阿凡达,当年红遍全球,3D效果很赞,经典科幻**。
银河系漫游指南,想象力很丰富的一部经典科幻**。
特效很棒,经典。
星际迷航,生命力非常强的科幻**系列,粉丝众多。
火星救援,虽然剧情中规中矩,但是却是一部很有代表性的硬科幻**,各种细节描述很棒。
PS:菲利普K迪克的作品被改编**都都成为很经典科幻**,向他致敬。
下面说一些可能算不上经典但是不错的科幻**。。
人生遥控器,会让你思考自己人生的软科幻。
全面回忆,原著菲利普,挺不错的。
地球停转之日(的,旧版实在太老了…),让人类反思自己一些行为的**,基努李维斯在里面很帅。
信号,低成本科幻**,但是伏笔很多,最后结局虽然与一些科幻**类似,但是还是有些意外新意的。
遗落战境,也是构思有趣的**,加上英雄主义,一气呵成的**,不错。
我是传奇,像生化危机但是不一样,佳片有约推荐过,佳片有约评价挺细的。
月球,不错,低成本创造好**。易语言数据库查询统计源码
太空运输,有点沉闷,但是构思不错。
深空失忆,看起来很爽的一部**,刺激,让人满足的科幻片。
环形使者,看起来挺有趣。
机械纪元,对于机器人这方面的思考应该数一数二的。
前目的地,形成的时间环挺缜密,不错。
超验骇客,好剧本,好演员,可惜导演不怎么样。。。
时间机器,穿越的时间那是相当的长,推荐一下。
明日边缘,有点像源代码但是有另一番风味。
我,机器人,很多人都一直在期待第二部的**。
超体,不是期待中的那么满意。
她,人与操作系统之恋。
猩球崛起,人气很高,想象力也充足的科幻片。
时间规划局,故事背景设定就让人眼前一亮,还算不错。
第五元素,很久以前看的,生化危机女主,值得看看。
极乐空间,第九区导演的作品但是比第九区差挺多。
楚门的世界,不算严格意义的科幻**,科幻边缘,但是作为剧情片值得称赞。
心方慌/异次元杀阵,就是...刺激!
逃出克隆岛,也是挺多人喜欢的。
生化危机,不解释。。。
致命魔术,虽然不算科幻的感觉,但是揭示了魔术的本质,诺兰作品,比惊天魔盗团好看多了。
永无止境,一种药可以让你逆袭。
创战纪,场景绝对科幻大片。
命运规划局,爱情软科幻。
地狱神探,不算科幻吧。。。拼团未中返红包的源码不过挺赞。
太空一号,科幻背景不错,故事比较一般。
记忆裂痕,吴宇森导演的,不是让人满意但可以看看。
科洛弗档案,很短,拍摄方式很特别,挺好的。
撕裂末日,软科幻背景挺赞的,帅气的贝尔。
鹰眼,关于厉害的超级计算机。
时空罪恶,也是时间环挺完整没什么漏洞的**。
地心引力,评分很高,故事不错。但是其实这部**更多是在已有的科学技术水平上的**,不算真正的科幻吧。
惊变天,类似于生化危机,但是开头是不一样的风格,有新意。
记忆提取,感觉节奏很慢的一部**,内容还是值得看的。进入别人记忆,看上去很有趣。
地球上最后一个人,影片主要是围绕男主角展开的,外星人只是种仿佛存在人内心的媒介。比较深刻的一部**。最后所有人都离开地球了,只剩下男主。
安德的游戏,科幻效果不错的**。
这个男人来自地球,没有任何特效,从角色的对话展开故事,谈论的非常广泛,而且有波澜转折,编剧真的很厉害。但可能对一些人来说有点沉闷。
黑暗风暴,这个**很久以前在**频道看过但是现在一直找不到资源。关于黑暗物质的科幻。
灵幻夹克,挺让人感动的**,与时空穿越有关,最后一刻很美好。
钢铁侠,第一部在硬科幻方面做得真的不错。超级英雄科幻片。
k星异客,有新意,很温暖的**。
星际之门,题材很有意思的科幻**。
寂静的地球,题材很不错。
机器管家,比较老的一部科幻**了,但是它的思考性的确超过了很多同类型的**,很让人感动的**。
黑洞频率,主打亲情的科幻影片,时空方面挺不错的。
时空线索,故事节凑不错,有自己的亮点。
神秘代码,凯奇大叔的**,不过这部**不是烂片,科幻构架还是很有趣很吸引人的。
太阳浩劫,画面不错的**,比预期好看一些。
发条橙,影响力很深远的一部**,我还没有看,不过看了简介,对我来说是一部一定会去看的一部**。
后天,科幻内容挺丰富的灾难片,视觉效果很好,挺赞的。
,也是经典的灾难片,有科幻成分,效果挺不错。
天地大冲撞,剧情没有太多特色,不过可以看看。
有关时间旅行的热门问题,剧情很有意思,小成本的科幻喜剧。
随你而去,关于穿越时空的科幻**,亲情与爱情在其中体现,男主角最后的选择也是让人思考,不算很优秀,不过完成度挺高的**,可以看看。
黑衣人系列,外星人其实就在我们身边的想象力加上幽默表演,很受热捧的科幻**系列。
超能查派,第九区导演的作品,比极乐空间让人满意多了,算是挺有诚意的作品,在众多人工智能的**中还是有自己的亮点的,结局挺有创意。
年鉴计划,时空穿越类型**,采用了伪纪录片形式第一人称视角拍摄,但是总体拍摄效果远远不如科洛弗档案,但**比较青春,其中的青春元素展现比较好。
机械姬,评价挺高的一部人工智能类型科幻**,一开始以为和其他人工智能**没什么区别,但是随着剧情发展,这部**的巧妙过人之处显现了出来,比一般的同类型**高出一个层次,靠剧情取胜的**,很出乎意料的发展,让人深思的讽刺意味。
另一个地球,一个女孩犯了错一直在寻找自我救赎的故事,天边总有另一个地球,很宁静很美丽。
欧罗巴日记,纪录片式的科幻**,很有创意,体现了宇航员探索的精神。
超能失控,低成本高质量,对**中人物的刻画还是很到位。
生命回圈,个人在一个非常狭小的空间里,基本没有任何道具,靠着人物的对话和环境的变化撑起来的一部科幻**,很值得一看。
皮囊之下,斯嘉丽女神的科幻惊悚片**~关于外星人在地球与人类的故事,整部**画面比较压抑,也有些诡异。
龙虾,**设定非常有创意的一部**...(虐死单身狗)总体感觉还行,但是没有期望中的那么好。
黑镜,虽然是英剧非**,但是每一集都是一个科幻短**吧,喜欢科幻的朋友可以去看看~
。。。感觉还有好多好科幻**要推荐啊。。。可惜一下子记不起来了!!!先这样吧,也写累了。。。全部都是原创。。。作为科幻迷,真的一写就停不下来啊!!!爱科幻**!写了这么多,看了的给个赞呗!
望采纳呦,以上
如何学习 Windows 编程?
在研究生阶段,我对 Windows 编程产生了浓厚的兴趣。毕业后,我坚持寻找与 Windows C/C++ 相关的工作,凭借扎实的技术功底,很快晋升为客户端负责人。
以下我将分享一个案例,以说明如何开发一款类似电驴的客户端。
若你对电驴源码感兴趣,可点击以下链接获取:链接: pan.baidu.com/s/1noZl... 提取码: yqa8
假设我们要开发一款类似电驴的软件,操作系统选择 Windows,使用语言为 C++。这要求您必须熟悉 C++ 常用语法,如果不熟悉,则需要补充相关知识。
在熟悉 C++ 语法的基础上,从产品实现技术来看,目标产品分为 UI 和网络通信两部分。接下来,我将详细介绍这两部分。
UI 部分:需要使用 Windows 的窗口技术。可以直接使用原生的 Win API 制作界面库,也可以选择 MFC、WTL、Duilib、wxWidgets 等熟悉的界面框架。无论阅读别人的项目还是自己开发,在确定 UI 库或使用原生 Win API 后,需要了解 Windows 的窗口、对话框、消息产生、派发与处理机制。如果不熟悉,需要补充相关知识。
根据软件功能,大致分为三大模块:资源、下载和分享。这三大块可以使用 Windows Tab 控件组织,此时需要了解 Windows Tab 控件的特性。
网络通信部分:主要分为两部分,一是程序启动时与服务端的交互,二是文件下载与分享的 P2P 网络。若对这些技术不熟悉,需要补充相关知识,具体为 Socket 的各种 API 函数以及基于这些 API 逻辑的组合。可能还会用到操作系统平台特有的网络 API 函数,如 WSAAsyncSelect 网络模型。
对于时间有限的开发者,不建议阅读大部头的网络编程书籍,容易放弃。建议找一些通俗易懂且可快速实践的书,如韩国人尹圣雨所著的《TCP/IP 网络编程》。这本书尤其适合非科班出身或网络编程小白,介绍了常见的 socket API 和网络通信模式,同时涵盖 Linux 和 Windows 两个操作系统平台。
关于网络通信部分如何与 UI 部分进行数据交换,可以使用队列、全局变量或 Windows 操作平台提供的特殊通信技术,如 PostMessage 函数、管道等。若使用队列,多线程之间需要保持资源的一致性和解决资源竞态,使用 Event、CriticalSection、Mutex、Semaphore 等。当然,这里只列举了软件的主干部分,还有很多细节需要考虑。
看懂了吗?一款 Windows 软件的生产等于以下公式:一款 C++ 软件 = C++ 语法 + 操作系统 API 函数调用
二、为什么你学 Windows 编程感觉这么枯燥或痛苦?原因大致有两点:一是未掌握 Windows 程序的规律和编码习惯,二是没有成就感。
如何寻找成就感?如果自己能看懂甚至编写一些有意义的 Windows 软件,那肯定会对自己信心大增。
接下来,我将从解决以上两点来介绍。
三、Windows 编程的特点(规律)
3.1 严谨的接口设计:Windows 提供的函数接口和各种函数参数的命名都很清晰易懂。虽然古怪的匈牙利命名法让 Windows 程序看起来有点“中世纪风格”,但另一方面增加了可读性和可理解性。Windows 提供的函数名称、结构体类型风格都非常统一。
3.2 匈牙利命名法:匈牙利命名法给程序变量加上类型信息,如整形变量表示数值,可以叫 nNum 或 iNum。当我们在代码中看到这样的变量时,无需查看其类型定义。
3.3 消息机制:Windows 消息机制是以后所有操作系统界面模型的滥觞,也是开发者应该学习和模仿的典范。
3.4 统一的用户界面使用习惯:Windows 程序除了一些自绘的界面以外,大多数界面风格、菜单位置、使用习惯等都是统一的。
四、如何学习 Windows 编程
在了解 Windows 软件的特定和编程习惯后,你需要逐个学习 Windows 的各个知识点,而不是孤零零地去学习单个的 API 函数。
我曾在知乎上开过一个关于 Windows 编程从入门到进阶的讲座,有兴趣的读者可以戳这里。
关于 Windows 的图书,我推荐两本互补的书籍:《Windows 程序设计(第五版)》和《Windows 核心编程(第五版)》。这两本书分别讲述了 Windows UI 和非 UI 部分的运行原理,内容非常丰富。
你可以一边学习 Windows 编程理论知识,一边阅读一些不错的 Windows 开源软件的代码,如金山卫士、电驴、开源 FTP 软件 filezilla、TeamTalk 等。
五、写在最后的话
与其他编程相比,有人说 Windows 编程已经日薄西山,但也不尽然。我们大多数人工作和娱乐的电脑仍然是 PC 机和 Windows,只不过因为熟悉各种软件,觉得它们存在是理所当然的。
如果你生活在二三线城市,掌握了 Windows 编程,可以在 Windows 开发各种桌面软件,这会大大增加你的经济收入。
我这里精心整理了一份我当初学习 C++ 的书单,分享给你。
六、一些你可以利用的资源
技术面试中常见的计算机网络题,可以看这里。关于求职后端开发的一些问题,可以看这里。
最后,祝你能坚持下来,学好 Windows 编程。
原创不易,如果觉得有帮助,请给 @张小方 点个赞呗~
如何用c输入字符并输出其ASCII码?
输入一个除空格以外的可见字符
题目如图:
做题之前要先审题。
首先打开dev-c++,创建一个新的源代码(ctrl+n)
先写一个c的头文件(#includestdio.h)
在我的“如何用c++/c输入字符并输出其ASCII码?(知识点)”这篇经验里,我讲了关于ASCII码的一些知识和用c++写此题的一点提示。这篇经验将教会你如何输出ASCII码的具体步骤。
我们在这道题里用到了转化的思想。
就是直接定义一个char类型的a。代码如图(本人太懒,不愿写代码)
然后读入char类型的a,输出int类型的a,就行了。代码如图(本人太懒,不愿写代码)
那么这道题就讲完了,整体代码如下图:(本人太懒,不愿写代码)
描述 输入一个ASCII码,输出其代表的字符。 输入 一个ASCII码。 输出 一个ASCII码代表的字符。 样例输入 样例输出 A 可以以问答的形式提交,我这里帮您测试。
如果有疑问,欢迎单机屏幕下方的“我有疑问”问我,也可以在我往期的经验里寻找哦~如果觉得经验好的话,点个赞呗!如果想让我在正文里写代码,可以给我留言!
你还不会写vite插件吗?没关系,我教你啊!
前言
大家好,我是易师傅,在现如今Vite工具快开始盛行之下,我们是不是可以去做一件有意义的事呢,比如写一个vite插件,你觉得怎么样?
刚好我们可以趁vite插件生态还未很成熟阶段,做一个让自己顺心,让领导赏心,让社区开心的插件,与之携手共进。
如果大家对vite感兴趣可以去看看专栏:?《Vite从入门到精通》
通过本文你可以学到如何创建一个vite插件模板
vite插件的各个钩子作用
vite插件的钩子执行顺序
如何写一个自己的插件
了解vite插件1.什么是vite插件vite其实就是一个由原生?ESModule?驱动的新型Web开发前端构建工具。
vite插件就可以很好的扩展vite自身不能做到的事情,比如文件的压缩、对commonjs的支持、打包进度条等等。
2.为什么要写vite插件相信在座的每位同学,到现在对webpack的相关配置以及常用插件都了如指掌了吧;
vite作为一个新型的前端构建工具,它还很年轻,也有很多扩展性,那么为什么我们不趁现在与它一起携手前进呢?做一些于你于我于大家更有意义的事呢?
快速体验要想写一个插件,那必须从创建一个项目开始,下面的vite插件通用模板大家以后写插件可以直接clone使用;
插件通用模板github:体验入口
插件github:体验入口
建议包管理器使用优先级:pnpm>yarn>npm>cnpm
长话短说,直接开干~
创建vite插件通用模板1.初始化1.1创建一个文件夹并且初始化:初始化按照提示操作即可
mkdirvite-plugin-progress&&cdvite-plugin-progress&&pnpminit1.2安装typescript
pnpmitypescript@types/node-D1.3配置tsconfig.json
{ "compilerOptions":{ "module":"ESNext","target":"esnext","moduleResolution":"node","strict":true,"declaration":true,"noUnusedLocals":true,"esModuleInterop":true,"outDir":"dist","lib":["ESNext"],"sourceMap":false,"noEmitOnError":true,"noImplicitAny":false},"include":["src/*","*.d.ts"],"exclude":["node_modules","examples","dist"]}1.4安装vite
//进入package.json{ ..."devDependencies":{ "vite":"*"}...}2.配置eslint和prettier(可选)安装eslint
pnpmieslint@typescript-eslint/parser@typescript-eslint/eslint-plugin--save-dev配置.eslintrc:配置连接
安装prettier(可选)
pnpmiprettiereslint-config-prettiereslint-plugin-prettier--save-dev配置.prettierrc:配置连接
3.新增src/index.ts入口importtype{ PluginOption}from'vite';exportdefaultfunctionvitePluginTemplate():PluginOption{ return{ //插件名称name:'vite-plugin-template',//pre会较于post先执行enforce:'pre',//post//指明它们仅在'build'或'serve'模式时调用apply:'build',//apply亦可以是一个函数config(config,{ command}){ console.log('这里是config钩子');},configResolved(resolvedConfig){ console.log('这里是configResolved钩子');},configureServer(server){ console.log('这里是configureServer钩子');},transformIndexHtml(html){ console.log('这里是transformIndexHtml钩子');},}}其中的vite插件函数钩子会在下面详细详解~
到这里,那么我们的基本模版就建好了,但是我们现在思考一下,我们应该怎么去运行这个插件呢?
那么我们就需要创建一些examples例子来运行这个代码了;
4.创建examples目录我这里创建了三套项目demo,大家直接copy就行了,这里就不详细介绍了
vite-react
vite-vue2
vite-vue3
如果你的插件需要多跑一些demo,自行创建项目即可;
那么下面我们就需要配置examples下的项目与当前根目录的插件做一个联调了(下面以examples/vite-vue3为例)。
5.配置examples/vite-vue3项目修改examples/vite-vue3/package.json
{ ..."devDependencies":{ ..."vite":"link:../../node_modules/vite","vite-plugin-template":"link:../../"}}上面意思就是说:
要把examples/vite-vue3项目中的vite版本与根目录vite-plugin-template的版本一致;
同时要把examples/vite-vue3项目中的vite-plugin-template指向你当前根目录所开发的插件;
引入插件:examples/vite-vue3/vite.config.ts
importtemplatefrom'vite-plugin-template';exportdefaultdefineConfig({ ...plugins:[vue(),template()],...});安装:cdexamples/vite-vue3&&pnpminstall
cdexamples/vite-vue3&&pnpminstall注意:examples/vite-vue2和examples/vite-react的配置与这一致
思考:
到这里,我们再思考一下,我们把examples/vite-vue3中的项目配置好了,但是我们应该怎么去运行呢?
直接去examples/vite-vue3目录下运行pnpmrunbuild或者pnpmrundev?
这样显然是不能运行成功的,因为我们的根目录下的src/index.ts是没法直接运行的,所以我们需要把.ts文件转义成.js文件;
那么我们怎么处理呢?
那么我们不得不去试着用用一个轻小且无需配置的工具tsup了。
6.安装tsup配置运行命令tsup是一个轻小且无需配置的,由esbuild支持的构建工具;
同时它可以直接把.ts、.tsx转成不同格式esm、cjs、iife的工具;
安装tsup
pnpmitypescript@types/node-D0在根目录下的package.json中配置
pnpmitypescript@types/node-D.开发环境运行开发环境运行:实时监听文件修改后重新打包(热更新)
pnpmitypescript@types/node-D2运行examples中的任意一个项目(以vite-vue3为例)
pnpmitypescript@types/node-D3注意:
如果你的插件只会在build时运行,那就设置"example:vue3":"cdexamples/vite-vue3&&pnpmrunbuild";
反之就运行pnpmrundev
输出:
到这里你就可以边开发边运行了,尤雨溪看了都说爽歪歪~
8.发布安装bumpp添加版本控制与tag
pnpmitypescript@types/node-D4配置package.json
pnpmitypescript@types/node-D5开发完插件后运行发布
pnpmitypescript@types/node-D6那么到这里,我们的vite插件模板就已经写好了,大家可以直接克隆vite-plugin-template模板使用;
如果你对vite的插件钩子和实现一个真正的vite插件感兴趣可以继续往下面看;
vite的插件钩子hooks们1.vite独有的钩子enforce:值可以是pre?或?post,pre会较于post先执行;
apply:值可以是build或serve?亦可以是一个函数,指明它们仅在build或serve模式时调用;
config(config,env):可以在vite被解析之前修改vite的相关配置。钩子接收原始用户配置config和一个描述配置环境的变量env;
configResolved(resolvedConfig):在解析vite配置后调用。使用这个钩子读取和存储最终解析的配置。当插件需要根据运行的命令做一些不同的事情时,它很有用。
configureServer(server):主要用来配置开发服务器,为dev-server(connect应用程序)添加自定义的中间件;
transformIndexHtml(html):转换index.html的专用钩子。钩子接收当前的HTML字符串和转换上下文;
handleHotUpdate(ctx):执行自定义HMR更新,可以通过ws往客户端发送自定义的事件;
2.vite与rollup的通用钩子之构建阶段options(options):在服务器启动时被调用:获取、操纵Rollup选项,严格意义上来讲,它执行于属于构建阶段之前;
buildStart(options):在每次开始构建时调用;
resolveId(source,importer,options):在每个传入模块请求时被调用,创建自定义确认函数,可以用来定位第三方依赖;
load(id):在每个传入模块请求时被调用,可以自定义加载器,可用来返回自定义的内容;
transform(code,id):在每个传入模块请求时被调用,主要是用来转换单个模块;
buildEnd():在构建阶段结束后被调用,此处构建结束只是代表所有模块转义完成;
3.vite与rollup的通用钩子之输出阶段outputOptions(options):接受输出参数;
renderStart(outputOptions,inputOptions):每次bundle.generate和bundle.write调用时都会被触发;
augmentChunkHash(chunkInfo):用来给chunk增加hash;
renderChunk(code,chunk,options):转译单个的chunk时触发。rollup输出每一个chunk文件的时候都会调用;
generateBundle(options,bundle,isWrite):在调用bundle.write之前立即触发这个hook;
writeBundle(options,bundle):在调用bundle.write后,所有的chunk都写入文件后,最后会调用一次writeBundle;
closeBundle():在服务器关闭时被调用
4.插件钩子函数hooks的执行顺序(如下图)5.插件的执行顺序别名处理Alias
用户插件设置enforce:'pre'
vite核心插件
用户插件未设置enforce
vite构建插件
用户插件设置enforce:'post'
vite构建后置插件(minify,manifest,reporting)
手撸一个vite插件下面以vite打包进度条插件为例;
插件地址:github如果您觉得不错欢迎star?
该插件已被vite官方收集至官方文档:链接地址
因为文章的重点不在于这个插件的详细实现过程,所以本文只会贴上源代码供大家参考,详细介绍会在下一篇文章中讲解,请大家拭目以待吧!
inde.ts
pnpmitypescript@types/node-D7cache.ts
pnpmitypescript@types/node-D8最后该系列会是一个持续更新系列,关于整个《Vite从入门到精通》专栏,我主要会从如下图几个方面讲解,请大家拭目以待吧!!!
宝贝们,都看到这里了,要不点个赞呗?
原文:/post/