当前位置: 首页 > 软件库 > Web应用开发 > >

Mint

前端开发编程语言
授权协议 BSD
开发语言 Crystal
所属分类 Web应用开发
软件类型 开源软件
地区 不详
投 递 者 唐弘和
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Mint 是面向前端开发的编程语言,旨在从语言层面解决编写单页应用 (Single Page Application, SAP) 的常见问题。例如:

  • 可复用组件
  • 全局和局部状态处理
  • 同步和异步计算
  • 样式
  • 路由

Mint 可帮助开发者编写无错误、易于阅读和可维护的应用程序。

语法示例

样式

在 Mint 语言中,支持使用style块直接用 CSS 来为元素设置样式。

component TodoItem {
  property color = "#333"
  property label = ""
  property done = false

  style base {
    align-items: center;
    display: flex;
  }

  style label {
    font-weight: bold;
    color: #{color};
    flex: 1;

    if (done) {
      text-decoration: line-through;
    }
  }

  fun render {
    <div::base>
      <span::label>
        <{ label }>
      </span>

      <Icon.Checkmark/>
      <Icon.Trash/>
    </div>
  }
}

数据管理

Mint 语言的store包含并用于管理数据,store具有全局访问属性,并且可以连接到组件。当store的数据发生变化时,连接的组件会被重新渲染。

record Todo {
  label : String,
  done : Bool
}

store Todos {
  property items = [] of Todo

  fun add (todo : Todo) {
    next { items = Array.push(todo, items) }
  }

  fun delete (todo : Todo) {
    next { items = Array.delete(todo, items) }
  }
}

component TodoList {
  connect Todos exposing { add, delete }

  ...
}

路由

Mint 语言中的路由是一项语言特性而不是工具库,路由可在routes块中进行定义,并支持类型化的路径参数。

routes {
  / {
    Application.setPage(Page::Home)
  }

  /blog {
    Application.setPage(Page::Blog)
  }

  /blog/:slug (slug : String) {
    sequence {
      Posts.load(slug)
      Application.setPage(Page::Post)
    }
  }

  * {
    Application.setPage(Page::NotFound)
  }
}

与 JavaScript 的互操作性

使用`...`语法即可内嵌任何 JavaScript 代码。

module MyFunctions {
  fun alert(message : String) : Promise(Never, Void) {
    `
    (new Promise((resolve) => {
      alert(#{message})
      resolve()
    })()
    `
  }

  fun decode : Maybe(TodoItem) {
    try {
      object =
        `{ label: "Check out Mint!",
           done: false }`

      result =
        decode as TodoItem

      Maybe::Just(result)
    } catch {
      Maybe::Nothing()
    }
  }
}
 相关资料
  • 必须 使用 Laravel 官方前端工具做前端开发自动化; 必须 保证页面只加载一个 .css 文件; 必须 保证页面只加载一个 .js 文件; 必须 为 .css 和 .js 增加 版本控制; 必须 使用 SASS 来书写 CSS 代码;

  • 同程旅行 一面 (2023.11.30) 时间:30min base:苏州 自我介绍 盒模型如何设置样式?脱离文档流有哪些方法? 说说var、let、const的区别? 如果说我在函数里面,使用到了let 能够访问哪些地方? ES6里面的this指向,相对于 ES5有什么区别? 说下JS事件循环机制? Node.js 如何封装一个接口?原生是如何做的? Node.js 的事件循环 和 JS的事件循

  • BOSS上投简历后约线上面试 一面: 简历浅挖从工作经验到项目经验 逐一询问写到的技术点 最后一题在聊天框手撕React 写一个倒计时 反问表现 技术上ok,但把技术边界扩展开(因为聊到了意向是全栈开发) 一周后约二面 二面: 全程半小时 面试官没有开摄像头,自我介绍后开始聊项目,深挖(感觉有一点压力面) 由于大学专业学的AI,面试官开始结合着问 直到25分钟左右最后一问被问到人工智能工程化的问题

  • 秋招这么久了,面了十几家公司。浅浅写几家面经攒攒人品。 拓维信息面经 1. 自我介绍。 2. vue2和vue3实现数据双向绑定原理的区别? 3. vuex怎么配置? 4. 坐过菜单栏吗?怎么实现的? 5. 路由跳转的方式? 6. 状态码你了解哪些? 7. es6新增的特性你知道哪些? 8. 箭头函数和普通函数的区别? 9. 组件间通信有哪些方法? 10. 给你一个紧急的项目你怎么接手? 11.

  • 此文档主要实现的目标:代码一致性和最佳实践。通过代码风格的一致性,降低维护代码的成本以及改善多人协作的效率。同时遵守最佳实践,确保页面性能得到最佳优化和高效的代码。

  • 微信小程序开发工具快速二维码编译跳转的页面是指定页面?还是怎么弄的 我发现我们公司的通二维码编译跳转到了这个页面 这个页面路径需要自己设置吗? 小程序模拟器上的页面路径却不是这个jump的路径 而是其他的路径 pages/login/login-check/login-check

  • 使用WorkerMan开发应用,你需要了解以下内容: 一、WorkerMan开发与普通PHP开发的不同之处 除了与HTTP协议相关的变量函数无法直接使用外,WorkerMan开发与普通PHP开发并没有很大不同。 1、应用层协议不同 普通PHP开发一般是基于HTTP应用层协议,WebServer已经帮开发者完成了协议的解析 WorkerMan支持各种协议,目前内置了HTTP、WebSocket等协议

  • 2023.11.23 时长:45min 技术一面(线上) 自我介绍 校园社团介绍 vue-router 原理(history api、hashchange) 防修改水印(canvas 观察者API) canvas 如何保证画出的图片清晰 vue2 中使用 TS、装饰器支持 TS 的原理 TS interface 和 type 的区别 下载文件 blob、a 标签 download ESM 是多久提