V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
djyde
V2EX  ›  分享创造

WebShell - 把 web app 打包成 native OS X app

  •  1
     
  •   djyde ·
    djyde · 2015-12-21 13:17:00 +08:00 · 5344 次点击
    这是一个创建于 3021 天前的主题,其中的信息可能已经有所发展或是发生改变。

    http://djyde.github.io/WebShell/

    有很多时候我希望一个常用的 web app 是一个 native app 而不是一个 browser tab. 所以我学了一下 swift 和 cocoa ,想把自己常用的一些 web app 做成 native app 。这个 native app 仅仅是一个包含 WebView 的窗口就够了。

    结果我发现每个 app 都这样做很费时间,所以我决定写一个基础的 seed project ——把基本的逻辑都写好,这样做一个新的 app 的时候只需要 clone 一下这个 seed project 然后改个 url 就完成了。

    于是就有了 WebShell ,你只需要在 ViewController.swift 里改一些 configurations ,改个 icon ,立即就能把 web app 当成 native app 来跑,然后用 xcode archive 一个 .app 包就能使用。

    比如说你现在只需要 $ git clone [email protected]:djyde/WebShell.git APP_NAME 就能建立一个 app project 跑起来。

    Demo

    这个是用 WebShell build 的 StackEdit (一个 markdown editor):

    下载

    这个是 JS Bin

    下载

    开源地址 http://djyde.github.io/WebShell/

    第 1 条附言  ·  2015-12-21 16:59:34 +08:00
    42 条回复    2015-12-26 21:21:45 +08:00
    djyde
        1
    djyde  
    OP
       2015-12-21 13:17:59 +08:00
    另外求懂 osx 开发的朋友帮忙 fix 一下 issue 的问题 😂
    oott123
        2
    oott123  
       2015-12-21 16:24:00 +08:00 via Android
    相比 electron 和 nw.js 有什么优势呢?
    djyde
        3
    djyde  
    OP
       2015-12-21 16:35:22 +08:00
    @oott123 electron 和 nw.js 包装了整个 node.js runtime, 而 WebShell 仅仅是一个 WebView 。做的事情不一样,没法比较
    oott123
        4
    oott123  
       2015-12-21 16:43:49 +08:00 via Android   ❤️ 1
    _(:з」∠)_也就是说你是它的子集咯。

    其实我就是看楼主冷场了来凑个热闹,并没有 Mac OS 设备。(
    oott123
        5
    oott123  
       2015-12-21 16:45:42 +08:00 via Android
    (对了,在 Windows 上这个叫 hta
    chemzqm
        6
    chemzqm  
       2015-12-21 16:48:11 +08:00
    这个搞起来简单啊,但是应该不能跨平台
    little_cup
        7
    little_cup  
       2015-12-21 16:50:23 +08:00
    以前拿 MacGap 打包试过,不过不会 OS X 开发,支持楼主!
    希望可以自定义 UA ,和可以支持改变状态栏颜色,直接在配置中指定或者读取 Chrome theme-color 都好。
    ericshine
        8
    ericshine  
       2015-12-21 16:54:08 +08:00
    解决了极大痛点
    djyde
        9
    djyde  
    OP
       2015-12-21 17:00:18 +08:00
    @little_cup 可以提个 issue
    v1024
        10
    v1024  
       2015-12-21 18:48:13 +08:00 via iPhone
    支持推送消息到通知中心吗?支持自定义 logo 吗? cookie 和 localstorage 如何处理的?
    djyde
        11
    djyde  
    OP
       2015-12-21 20:19:12 +08:00
    @v1024 notification 还在做, cookie 和 localstorage 和浏览器一样。 icon 是在 xcode 里自己 drag 进去的
    kendetrics
        12
    kendetrics  
       2015-12-21 20:41:13 +08:00
    槽我一直想要个 StackEdit 的客户端
    好评如潮
    l0wkey
        13
    l0wkey  
       2015-12-21 20:52:35 +08:00
    是否可以自定义引入文件, 如 js , css
    poke707
        14
    poke707  
       2015-12-21 20:53:44 +08:00 via Android
    Logo 不错
    djyde
        15
    djyde  
    OP
       2015-12-21 21:08:30 +08:00
    @l0wkey 这样做会让 WebShell 变成一个 browser..
    l0wkey
        16
    l0wkey  
       2015-12-21 21:15:48 +08:00
    @djyde 哈哈哈, browser 默认情况下才不会允许自定义 css 和 js
    TangMonk
        17
    TangMonk  
       2015-12-21 21:17:54 +08:00
    not work on 10.10
    djyde
        18
    djyde  
    OP
       2015-12-21 21:18:52 +08:00
    @TangMonk what meas "not work"?
    ericshine
        19
    ericshine  
       2015-12-21 23:30:37 +08:00
    应该也可以试试在 iOS 上做同样的事情。
    sox
        20
    sox  
       2015-12-21 23:33:18 +08:00
    我用 MacGap 写了一句 `location.href = 'xxx'` 感觉差不多。。
    ETiV
        21
    ETiV  
       2015-12-21 23:37:19 +08:00 via iPhone
    这个世界怎么了……
    光是 WebView 怎么能说是 native app ……
    djyde
        22
    djyde  
    OP
       2015-12-21 23:49:46 +08:00
    @sox 👍
    sox
        23
    sox  
       2015-12-22 00:06:37 +08:00
    @ETiV 全部原生 swift/oc 代码怎么不是 native app 了
    canautumn
        24
    canautumn  
       2015-12-22 00:20:22 +08:00
    很多年前有一个叫 Fluid 的 App 可以实现类似功能,还支持 Badge Icon 之类的。
    Citrus
        25
    Citrus  
       2015-12-22 00:29:01 +08:00 via iPhone   ❤️ 3
    建议楼主了解一下 WebShell 这个词的意思。。。看得我好蛋疼。。。
    pynix
        26
    pynix  
       2015-12-22 06:17:27 +08:00
    cordova
    Wao
        27
    Wao  
       2015-12-22 08:27:21 +08:00
    有计划加入对本地离线资源的支持吗? 想自己打包个本地下载好的 YAAW
    TangMonk
        28
    TangMonk  
       2015-12-22 09:01:37 +08:00
    @djyde , A picture is worth a thousand words :p
    djyde
        29
    djyde  
    OP
       2015-12-22 09:22:58 +08:00
    @TangMonk ok, 是项目配置的问题
    g0thic
        30
    g0thic  
       2015-12-22 09:32:44 +08:00
    WebShell 。。。。难道是我以前理解的 webshell 有问题
    MrX
        31
    MrX  
       2015-12-22 10:00:18 +08:00   ❤️ 1
    AWSAM
        32
    AWSAM  
       2015-12-22 10:03:06 +08:00
    要是能支持配置 socks5 代理就好了
    djyde
        33
    djyde  
    OP
       2015-12-22 10:11:20 +08:00
    @AWSAM 自动会走 socks5 的
    djyde
        34
    djyde  
    OP
       2015-12-22 10:15:46 +08:00
    @g0thic
    @Citrus

    不知道有 webshell
    panlilu
        35
    panlilu  
       2015-12-22 10:15:46 +08:00
    这名字的确让人误解。。。 webshell
    AWSAM
        36
    AWSAM  
       2015-12-22 13:28:46 +08:00
    @djyde 能每个应用走不同的代理吗
    djyde
        37
    djyde  
    OP
       2015-12-22 13:47:15 +08:00
    @AWSAM 不能
    YuJianrong
        38
    YuJianrong  
       2015-12-22 15:49:54 +08:00
    我想了想是不是 chrome 的 app 就是做这件事情的……
    djyde
        39
    djyde  
    OP
       2015-12-22 15:51:14 +08:00
    hst001
        40
    hst001  
       2015-12-23 14:24:27 +08:00
    我没记错,一行命令就可以了
    chrome --app=http://xxxx
    djyde
        41
    djyde  
    OP
       2015-12-23 14:26:51 +08:00
    @hst001 cool
    jaminzzhang
        42
    jaminzzhang  
       2015-12-26 21:21:45 +08:00
    非常 cool 的东西,厉害。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2754 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 15:06 · PVG 23:06 · LAX 08:06 · JFK 11:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.