<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>编程 on FFmpig的个人网站</title>
        <link>https://ffmpig.pages.dev/categories/%E7%BC%96%E7%A8%8B/</link>
        <description>Recent content in 编程 on FFmpig的个人网站</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-CN</language>
        <lastBuildDate>Mon, 31 Aug 2026 09:03:42 +0800</lastBuildDate><atom:link href="https://ffmpig.pages.dev/categories/%E7%BC%96%E7%A8%8B/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>“任何可以用 JavaScript 编写的应用，最终都必将用 JavaScript 编写。”</title>
            <link>https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./</link>
            <pubDate>Mon, 31 Aug 2026 09:03:42 +0800</pubDate>
            <guid>https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./</guid>
            <description>&lt;img src=&#34;https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/cf45928f8c6db55aab9e1675e3af7ec6a5e5157c_hu_e613bec19ce7872a.png&#34; alt=&#34;Featured image of post “任何可以用 JavaScript 编写的应用，最终都必将用 JavaScript 编写。”&#34; /&gt;&lt;h1 id=&#34;heading&#34;&gt;&lt;a href=&#34;#heading&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;&lt;em&gt;&amp;ldquo;Anything that can be written in JavaScript will eventually be written in JavaScript.&amp;rdquo;&lt;/em&gt;&#xA;&lt;/h1&gt;&lt;p&gt;这是2026年的Web游戏。直接将&lt;code&gt;Minecraft 26.2&lt;/code&gt;搬进了浏览器……（&lt;a class=&#34;link&#34; href=&#34;https://mcjs.link/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;网页链接&lt;/a&gt;）&lt;/p&gt;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;    &#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&lt;div class=&#34;video-wrapper&#34;&gt;&#xD;&#xA;    &lt;iframe src=&#34;https://player.bilibili.com/player.html?as_wide=1&amp;amp;high_quality=1&amp;amp;page=1&amp;bvid=BV1W64k6FEXL&#34;&#xD;&#xA;            scrolling=&#34;no&#34;&#xD;&#xA;            frameborder=&#34;no&#34;&#xD;&#xA;            framespacing=&#34;0&#34;&#xD;&#xA;            allowfullscreen=&#34;true&#34;&#xD;&#xA;    &gt;&#xD;&#xA;    &lt;/iframe&gt;&#xD;&#xA;&lt;/div&gt;&#xD;&#xA;&#xA;&lt;p&gt;当我一开始看到这个网页，我整个人都震惊了。因为我从来没有想过有人能在浏览器里把MC还原个八九成的样子。以前我看到的网页游戏都是像&lt;a class=&#34;link&#34; href=&#34;https://poki.com/zh&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;POKI&lt;/a&gt;那样非常简单、无脑。当然，它的质量也不会说特别高，可能就是简简单单的几个像素就搞定了，甚至就在我这样一个分辨率不算高的屏幕上我都能看到瑕疵（比如非常简单的抗锯齿，效果俗称“狗牙”）。&lt;/p&gt;&#xA;&lt;p&gt;但是当我看到有人能把这样一个&lt;strong&gt;史上销量第一&lt;/strong&gt;的游戏给它照搬进浏览器里，而且甚至能保留加载资源包等等特性，那真是了不起。&lt;/p&gt;&#xA;&lt;p&gt;我以前可能是低估了网页的实力。其实我从来没有深挖过WebGL这一块，因为它对我来说并没有什么实质性的用处。日常的Web开发无非就是一个标签套另一个标签。然后呢，写点样式表，再加亿点JS代码就可以了。我根本没有想过在浏览器中还原那些经典的游戏，像有些人去还原俄罗斯方块、贪吃蛇。最经典的还是Edge Surf和谷歌的Dino Run。&lt;/p&gt;&#xA;&lt;p&gt;可能也是我注重实用。所以我对这些技术都不是特别地看重，因为没有人说我去看个电影，我要用WebGL；没有人说我去网上购物，我需要动用canvas。&lt;/p&gt;&#xA;&lt;p&gt;以前我都在学习怎么用CSS做出一个漂亮的动画，看着那些大神用CSS还原中国的图。但是现在我觉得我真的要重新审视这一块领域了。&lt;/p&gt;&#xA;&lt;p&gt;我想起来之前&lt;strong&gt;Jeff Atwood&lt;/strong&gt;说过的一句话。&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;Anything that can be written in JavaScript will eventually be written in JavaScript.&lt;/p&gt;&#xA;&lt;p&gt;任何可以用JavaScript编写的应用，最终都将用JavaScript编写。&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;果真是这样&lt;/p&gt;&#xA;&lt;p&gt;我想不到我烧录自己的作品到ESP32芯片的时候我竟然可以使用浏览器这个软件。我想不到有人会绞尽脑汁还原Liqurd Glass。&lt;/p&gt;&#xA;&lt;p&gt;其实刚刚我说的这些话都很混乱，首先我使用语音输入，其次是我是真真实实被这个项目吓到了。我现在哑口无言。所以还是用一些截图来终结这个文章吧。在看的时候想一想，你真的能看得出这是浏览器中的MC吗？&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;438px&#34; data-flex-grow=&#34;182&#34; height=&#34;1568&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/bb956e5f6621ef6f680515c8a0e39ac0b6dd74d6_hu_5c9f27e8789b3c57.png&#34; srcset=&#34;https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/bb956e5f6621ef6f680515c8a0e39ac0b6dd74d6_hu_4a54f74e004d9755.png 800w, https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/bb956e5f6621ef6f680515c8a0e39ac0b6dd74d6_hu_28a1ab5f11f5ec1a.png 1600w, https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/bb956e5f6621ef6f680515c8a0e39ac0b6dd74d6_hu_6e88d4a58d7fb3b7.png 2400w, https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/bb956e5f6621ef6f680515c8a0e39ac0b6dd74d6_hu_5c9f27e8789b3c57.png 2864w&#34; width=&#34;2864&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;438px&#34; data-flex-grow=&#34;182&#34; height=&#34;1568&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/7e2c15fa46f43c61c07dbcdd3f13dcc477cf06cf_hu_48a30e560fc1b3d3.png&#34; srcset=&#34;https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/7e2c15fa46f43c61c07dbcdd3f13dcc477cf06cf_hu_ac0b9be838751402.png 800w, https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/7e2c15fa46f43c61c07dbcdd3f13dcc477cf06cf_hu_2f28ff78010e8e70.png 1600w, https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/7e2c15fa46f43c61c07dbcdd3f13dcc477cf06cf_hu_8eee668ea87d52d9.png 2400w, https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/7e2c15fa46f43c61c07dbcdd3f13dcc477cf06cf_hu_48a30e560fc1b3d3.png 2864w&#34; width=&#34;2864&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;438px&#34; data-flex-grow=&#34;182&#34; height=&#34;1568&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/d233d748c054754dd66c55dad0b2311a8cd8771e_hu_5845a9bfed711dc4.png&#34; srcset=&#34;https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/d233d748c054754dd66c55dad0b2311a8cd8771e_hu_c5d2f375ef017471.png 800w, https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/d233d748c054754dd66c55dad0b2311a8cd8771e_hu_c40e0a5b1fe33dcc.png 1600w, https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/d233d748c054754dd66c55dad0b2311a8cd8771e_hu_a027de3d5c2602a1.png 2400w, https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/d233d748c054754dd66c55dad0b2311a8cd8771e_hu_5845a9bfed711dc4.png 2864w&#34; width=&#34;2864&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;438px&#34; data-flex-grow=&#34;182&#34; height=&#34;1568&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/6ffa83ff7f314f09a658eea037fa32a5a274ac02_hu_4b19b8a4aaac52f9.png&#34; srcset=&#34;https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/6ffa83ff7f314f09a658eea037fa32a5a274ac02_hu_6de724cb3a1605b5.png 800w, https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/6ffa83ff7f314f09a658eea037fa32a5a274ac02_hu_b73433192b6db621.png 1600w, https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/6ffa83ff7f314f09a658eea037fa32a5a274ac02_hu_7c807247ee900707.png 2400w, https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/6ffa83ff7f314f09a658eea037fa32a5a274ac02_hu_4b19b8a4aaac52f9.png 2864w&#34; width=&#34;2864&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;438px&#34; data-flex-grow=&#34;182&#34; height=&#34;1568&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/75817cb03f2b3f3a1e8640f6ac101bdaaa2d8274_hu_4f18fb3cd6ff40a2.png&#34; srcset=&#34;https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/75817cb03f2b3f3a1e8640f6ac101bdaaa2d8274_hu_4997bf8b69c036f1.png 800w, https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/75817cb03f2b3f3a1e8640f6ac101bdaaa2d8274_hu_ce6bc8c2ad571714.png 1600w, https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/75817cb03f2b3f3a1e8640f6ac101bdaaa2d8274_hu_6ac891d933fcbcf1.png 2400w, https://ffmpig.pages.dev/post/anything-that-can-be-written-in-javascript-will-eventually-be-written-in-javascript./assets/75817cb03f2b3f3a1e8640f6ac101bdaaa2d8274_hu_4f18fb3cd6ff40a2.png 2864w&#34; width=&#34;2864&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;最后再说一句，我不知道开发者把&lt;a class=&#34;link&#34; href=&#34;https://zh.minecraft.wiki/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Minecraft Wiki&lt;/a&gt;背得有多滚瓜烂熟。这里也给出&lt;a class=&#34;link&#34; href=&#34;https://github.com/mcjsteam/mcjs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;GitHub链接&lt;/a&gt;，如果有问题请到这里提交。哦耶！又水了一篇文章。&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
