首页
/ popcorn 的安装和配置教程

popcorn 的安装和配置教程

2025-05-17 14:01:16作者:凤尚柏Louis

1. 项目基础介绍和主要编程语言

popcorn 是一个开源项目,它允许在浏览器中运行客户端的 Elixir 语言,并且实现与 JavaScript 的互操作性。该项目目前处于早期阶段,可能会出现一些问题,如果遇到问题,可以报告一个 issue。项目欢迎贡献,但在投入大量工作之前,请先打开一个 issue。

该项目主要使用以下编程语言和框架:

  • Erlang
  • Elixir
  • HTML
  • JavaScript
  • Shell
  • CSS

2. 项目使用的关键技术和框架

popcorn 在内部使用 AtomVM,这是一个轻量级的 Erlang 虚拟机,使得 Elixir 代码能够在 Web 浏览器中运行。该项目还涉及到了 WebAssembly (WASM) 技术,它是一种可以在浏览器中运行的代码格式。

3. 项目安装和配置的准备工作及详细步骤

准备工作

在开始安装之前,请确保您的开发环境满足以下要求:

  • OTP 26.0.2
  • Elixir 1.17.3
  • Git

安装步骤

以下是在本地环境安装 popcorn 的详细步骤:

  1. 克隆项目到本地:

    git clone https://github.com/software-mansion/popcorn.git
    cd popcorn
    
  2. 添加项目依赖:

    打开项目的 mix.exs 文件,并在 deps 函数中添加以下代码:

    def deps do
      [
        {:popcorn, github: "software-mansion/popcorn"}
      ]
    end
    
  3. 创建启动模块:

    lib 目录下创建一个名为 MyApp.Start.ex 的文件,并添加以下内容:

    defmodule MyApp.Start do
      def start do
        Popcorn.Wasm.register("main")
        IO.puts("Hello from WASM")
      end
    end
    
  4. 注册启动模块和输出目录:

    打开 config/config.exs 文件,并添加以下配置:

    import Config
    
    config :popcorn,
      start_module: MyApp.Start,
      out_dir: "static/wasm"
    
  5. 获取依赖并编译项目:

    在项目根目录执行以下命令:

    mix deps.get
    mix popcorn.cook
    

    这将在 static/wasm 目录下生成 WebAssembly 文件。

  6. 创建 HTML 文件:

    创建一个 index.html 文件,并添加以下内容:

    <!DOCTYPE html>
    <html>
    <script type="module">
      import { Popcorn } from "./wasm/popcorn.js";
      await Popcorn.init({onStdout: console.log});
    </script>
    <body>
    </body>
    </html>
    
  7. 运行 HTTP 服务器:

    使用 mix popcorn.simple_server 生成一个简单的 HTTP 服务器脚本,并用 elixir server.exs 运行它。然后访问 http://localhost:4000,你将在控制台看到 "Hello from WASM" 的输出。

请确保使用支持 WebAssembly 的浏览器,并且如果使用其他 HTTP 静态文件服务器,需要设置正确的 HTTP 头部 Cross-Origin-Opener-Policy: same-originCross-Origin-Embedder-Policy: require-corp

登录后查看全文
热门项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
openHiTLS-examplesopenHiTLS-examples
本仓将为广大高校开发者提供开源实践和创新开发平台,收集和展示openHiTLS示例代码及创新应用,欢迎大家投稿,让全世界看到您的精巧密码实现设计,也让更多人通过您的优秀成果,理解、喜爱上密码技术。
C
52
461
kernelkernel
deepin linux kernel
C
22
5
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
349
381
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
7
0
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
131
185
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
873
517
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
336
1.09 K
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
179
264
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
607
59
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4