Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Web App 里的渐进增强 #37

Open
lmk123 opened this issue Feb 18, 2016 · 1 comment
Open

Web App 里的渐进增强 #37

lmk123 opened this issue Feb 18, 2016 · 1 comment

Comments

@lmk123
Copy link
Owner

lmk123 commented Feb 18, 2016

最近我正在开发公司网站的移动端网站——考虑到功能繁多且无需服务端渲染,也许用 “Web App” 来形容会更准确一点。

公司希望这个 Web App 能运行在微信里,并使用微信 SDK 提供的各种功能(特别是“扫描条形码”的功能)。也就是说,公司想要一个“微信 only” 的网站。

但实际上,我更倾向于“渐进增强”的做法。

以“扫描条形码”举例来说,除了微信,PhoneGap 也有插件提供这个功能。我的想法是:开发一个基本的 Web App,这个 Web App 应该能在任何浏览器环境(普通浏览器、微信内置浏览器或者 PhoneGap)里使用,但如果用户点击了“扫描条形码”的按钮:

  • 如果是在微信内置浏览器内,就使用微信 SDK
  • 如果是在 PhoneGap 包装的 Hybrid App 内,就使用插件提供的 API
  • 如果是在普通浏览器内,就提示用户无法使用此功能,并引导他在微信内打开链接,或者下载 PhoneGap App

也就是说,我们可以把这部分逻辑独立出来,并在不同的环境引用不同的功能:

let api;

if( isWeixin ) {
  api = {
    scan() { 
     wx.scanQRCode();
    }
  };
}

if ( isPhoneGap ) {
  api = {
    scan() {
      // 插件提供的某个方法
      scanFuncProviedByPlugin();
    }
  };
}

if ( isNormal ) {
  api = {
    scan() { alert( '无法使用扫一扫功能,请在微信中打开此链接,或者下载我们的手机客户端。' ); }
  };
}

api.scan();

这样做的好处是,如果以后又有新的运行环境出现了(例如在 Chrome App 中运行),那我们只需要多添加一个 api 就可以无缝迁移了。

@SiZapPaaiGwat
Copy link

推销个小工具,把issues列表插入到你的README,这样在主页就可以看到博文列表了.
https://github.com/simongfxu/giab
😸

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants