LitElement(一)概述
1、一些感悟
自从踏入编程领域开始,从html,css,JavaScript,jQuery,bootstrap开始接触前端,经常用NodeJS,ejs等模板语言来写个简单的页面,感觉蛮简单的,也不怎么放在心上。有一天看了看React的代码,感有种懵逼的赶脚,但也就当JS看了,然而什么虚拟DOM,Native,单向数据流,组件就不太懂了,感觉我可能有点落后了。故打算补充一点前端知识,以后看见别人的代码不至于一脸懵逼。
2、LitElement Start
今天阅读webrtc屏幕共享的example,忽然发现main.js的代码风格由前面几个的纯js变成了自定义组件的风格,一下子看的有点凌乱,于是决定就从这里开始,代码中引用了如下一行
import {LitElement, html} from 'https://unpkg.com/@polymer/lit-element@0.6.2/lit-element.js?module';
拿到自己的环境中一试,果断运行不起来,查了一下发现这个LitElement原来是个前端组件工具,官网地址,先运行其给的 Quick start体验一下,但是一运行
npm install -g Polymer-cli
安装环境,发现需要 下载puppeteer和Chromium,有时有可能下载比较慢,需要耐心等待,或换个时间段下载
> puppeteer@1.18.1 install C:\Users\JiXiaoHua\AppData\Roaming\npm\node_modules\polymer-cli\node_modules\puppeteer
> node install.js Downloading Chromium r672088 - 141 Mb [=========== ] 53% 2529.8s
关于Puppeteer,见 Puppeteer 初探,前面测试Electron和NWJs的时候用到过这个东西
在我浏览Puppeteer的时候忽然发现了如下一段话,可以换这种方法
安装puppeteer时如果无法下载Chromium,可以使用[puppeteer-cn](https://npm.taobao.org/package/puppeteer-cn)代替的。这个包先检查你本地chrome是否大于59,再决定是否安装Chromium,并且使用国内源安装,速度很快且保证成功。
然后装完了又开始这个,不知道为什么,这个是真个不动,selenium是一个web应用测试工具,参考https://www.jianshu.com/p/3aa45532e179,试了几次都不行,所以我直接ctrl+c掉了,并不需要这东西,其实上面的Puppeteer也应该是不需要的,LitElement好像是对Polymer的简化,所以Polymer构建工具是必须的,Polymer是个和前端三大框架同级的东西,不过不怎么火,官网地址。
----------
selenium-standalone installation starting
----------
然后克隆代码,安装依赖,运行静态服务就可以访问了
npm install -g polymer-cli
git clone https://github.com/PolymerLabs/start-lit-element
cd start-lit-element
npm install
polymer serve
这里关于ploymer server命令相关的东西需要注意一下,详见官网命令部分文档,可以自定义指定启动端口,IP,build构建目录等,然后两个firebase文件是用来部署在谷歌云服务器上的,对我们来说没啥作用。关于目录结构和相关文件的作用见https://blog.csdn.net/weixin_43171402/article/details/82588145。
要部署项目文件,比如说可以选择直接将ploymer build的路径指向node express的public目录,或其他http/https服务器上相关目录下,这样一来就不用server和app起两个服务了。
3、用于生产环境的LitElement构建
虽然用ploymer构建工具可以初始化一个项目并build,但是LitElement可以说是逐渐从ploymer中独立了出来,使用ploymer的构建方式显得有些累赘,好在官网提供了使用Rollup打包的例子,见文档和示例项目,这才是LitElement的正确使用方法。
可以发现Bable+Rollup打包后的项目非常的简洁,没有ploymer相关的东西,只是将依赖模块做了路径转换,并且可以用serve工具启动预览项目,serve文档见npm说明,这是一个很方便的启动http服务的工具,可以自动检测空闲端口。比如说有个html文件夹,下面有一组静态资源,全局安装serve后只需要serve html就可以启动一个静态资源服务器,比node http和tomcat等更加方便。
4、实用的Rollup打包教程
有基本使用方法,多文件输出等等,必备技能,详见:https://segmentfault.com/a/1190000010628352
关于组件化的文章:大话前端组件化,
LitElement(一)概述的更多相关文章
- LitElement(六)生命周期
1.概述 基于LitElement的组件通过响应观察到的属性更改而异步更新. 属性更改是分批进行的,如果在请求更新后,更新开始之前,发生更多属性更改,则所有更改都将捕获在同一次更新中. 在较高级别上, ...
- LitElement(五)事件
1.概述 1.1 在何处添加事件监听器 您需要以一种可以在事件发生之前触发的方法添加事件监听器.但是,为了获得最佳的加载性能,应尽可能晚添加事件监听器. 你可以在以下位置添加事件监听器: 1.1.1 ...
- LitElement(四)属性
1.概述 LitElement管理您声明的属性及其对应的属性.默认情况下,LitElement将: 确保在任何声明的属性更改时进行元素更新. 捕获已声明属性的实例值.在浏览器注册自定义元素定义之前设置 ...
- LitElement(三)Styles样式
1.为组件添加样式 import { LitElement, css, html } from 'lit-element'; class MyElement extends LitElement { ...
- 【AR实验室】ARToolKit之概述篇
0x00 - 前言 我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- .Net 大型分布式基础服务架构横向演变概述
一. 业务背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维及监控. 二. 基础 ...
- [C#] 进阶 - LINQ 标准查询操作概述
LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...
随机推荐
- mysql升级后出现Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'userinfo.
安装了mysql5.7,用group by 查询时抛出如下异常: Expression #3 of SELECT list is not in GROUP BY clause and contains ...
- Python学习笔记--协程asyncio
协程的主要功能是单线程并发运行 假设有3个耗时不一样的任务.看看协程的效果. 先来看没有使用协程情况: #!/usr/bin/python3 # -*- coding:utf-8 -*- import ...
- JS_0001:js常用知识点
1,获取常量值 ${} var port = 8080; console.log(`服务器运行在http://${hostName}:${port}`); 2,js中从服务器中获取值,并赋值給ht ...
- Spark学习之路 (九)SparkCore的调优之数据倾斜调优[转]
调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题--数据倾斜,此时Spark作业的性能会比期望差很多.数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的 ...
- git项目分支管理
分支管理 创建项目时,会针对不同环境创建两个常设分支(也可以算主分支,永久不会删除): master :生产环境的稳定分支,生产环境基于该分支构建.仅用来发布新版本,除了从 release 测试分支或 ...
- source、sh、./执行脚本对变量的影响
shell脚本中的变量: local一般用于局部变量声明,多在在函数内部使用. shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止. she ...
- leetcode四道组合总和问题总结(39+40+216+377)
39题目: 链接:https://leetcode-cn.com/problems/combination-sum/ 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 ...
- 字符串问题----去掉字符串中连续出现K个0的子串
去掉字符串中连续出现K个0的子串 给定一个字符串str,和一个整数k, 如果str中正好有连续K 个'0'字符出现,把连续的 k 个 '0'去掉,返回处理后的子串. [解题思路] 1. 定义两个变量, ...
- mui 时间选择器和上传图片
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name= ...
- 目标检测,主要问题发展,非极大值抑制中阈值也作为参数去学习更满足end2end,最近发展趋势和主要研究思路方向
目标检测,主要问题发展,非极大值抑制中阈值也作为参数去学习更满足end2end,最近发展趋势和主要研究思路方向 待办 目标检测问题时间线 特征金字塔加滑窗 对象框推荐 回归算法回归对象框 多尺度检测 ...