npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

lavas-extension-appshell

v0.0.9

Published

lavas install appshell

Downloads

12

Readme

扩展

什么是扩展

Lavas 除了能够生成 PWA 项目(通过 lavas init)以外,还提供了“扩展”的机制允许开发者很方便的获取比较通用的新功能,节省时间成本并避免重复开发,类似于我们熟悉 nodejs 的包管理器 npm package

在 npm package 的生态环境中,开发者不单单是使用方,也可以是提供方。在这点上 Lavas 扩展也是相同的,开发者不单单可以使用别人写的扩展,也可以自己提供扩展,只要遵循一定的规则即可。

有关 Lavas 更多的信息可以参考官网 https://lavas.baidu.com/,也欢迎加入 Lavas 开发的大家庭!

appshell

这里要介绍的是目前 Lavas 内置的一个最常用的扩展: appshell,效果如图:

appshell效果

简而言之,appshell 可以帮助开发者套上一层“壳”。除了在壳的界面上可以进行许多操作(侧滑菜单,顶部搜索按钮,底部导航等)之外,因为壳本身会被 service worker 缓存,因此在切换页面时壳能够很快展现,大大提升用户体验,这也是 PWA 的典型应用之一。关于 appshell 更多的信息可以参考这里

安装方式

这里以 appshell 为例,向开发者介绍如何快速把这个扩展安装到 Lavas 项目中。

我们回顾一下安装 npm package 一般需要两个步骤:

  1. 运行命令 npm install xxx 安装扩展主体
  2. 修改相关代码,添加 import xxx from 'xxx' 或者 const xxx = require('xxx'); 来完成引用

Lavas 安装扩展也需要执行这样两个步骤

安装扩展主体

lavas install appshell

或者简写:

lavas i appshell

执行效果如图:

安装效果

扩展主体安装在 extensions 目录中。

修改引用代码

鉴于 Lavas 引用扩展较 npm 更为复杂,在执行 lavas install appshell 之后,Lavas 会自动提示还有哪些代码需要修改并给出修改建议,正如上图所示的 xxx.recommend.js 这样。

观察这些 recommend 文件,我们着重关注其中的 lavas extensions startlavas extensions end 两个注释之间的部分,这就是需要开发者手动修改的部分。

我们以 core/store.js 举例。在安装扩展前,store.js 的 片段 大概是这个样子:

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export function createStore() {
    return new Vuex.Store({});
}

执行过安装命令后,与之平级会出现一个新的文件 store.recommend.js, 文件内容的 片段 大概是:

import Vue from 'vue';
import Vuex from 'vuex';
/* ======== lavas extensions start ======== */
import {createAppShellState} from 'extensions/appshell/store/module';
/* ======== lavas extensions end ======== */

Vue.use(Vuex);

export function createStore() {
    return new Vuex.Store({
        /* ======== lavas extensions start ======== */
        modules: {
            appshell: createAppShellState()
        }
        /* ======== lavas extensions end ======== */
    });
}

可以看到 recommend 文件中需要重点关注的有两处,作用为引用 appshell 提供的 module,并注入到项目本身的 vuex 中。在将这两处修改并保存到 store.js 之后,store.recommend.js 即可删除,不必保留

之所以采取这样的“半自动化”的安装方式,主要原因是相较于 npm 的一句 require/import ,Lavas 的引用方式更加复杂;而涉及修改的代码开发者可以自主改动,因此又无法实现通过安装命令直接修改开发者代码的做法。只能采取给开发者提供修改建议,由开发者手动修改这样的折中方案。

卸载方式

Lavas 除了给开发者提供快速安装的方法之外,也集成了命令完成其反向操作,即卸载扩展。和安装类似,同样需要两个步骤。

卸载扩展主体

lavas uninstall appshell

或者简写:

lavas un appshell

执行效果如图:

卸载效果

请注意:卸载扩展会删除 extensions 目录中对应的扩展目录,因此如果开发者有对它进行过任何改动也将 一并删除

修改引用代码

本质上就是将安装时修改的代码再恢复原状,否则因为扩展主体已经删除,引用代码将抛出错误。为了防止开发者有所遗漏,Lavas 会指明哪些文件需要修改。

同时如果开发者没有删除在安装时引入的 recommend 文件,在卸载时也会一并删除。