tangzheng
tangzheng
## 开篇 最近在做一个chrome app的云相机应用,应用包括拍照、摄像、保存照片视频、上传文件等等核心功能,其中涉及到很多HTML5对媒体流相关的API。写这篇文章的目的,其一是总结梳理知识点,最重要是希望对有相关需求的读者提供一些指导。 注:本篇文章以实战为准,理论知识不做过多介绍。 ## 拍照 HTML5的getUserMedia API为用户提供访问硬件设备媒体(摄像头、视频、音频、地理位置等)的接口,基于该接口,开发者可以在不依赖任何浏览器插件的条件下访问硬件媒体设备。 浏览器兼容性如下:  从上图可以看到,主流浏览器Firefox、Chrome、Safari、Opera等等已经全面支持。 **1、获取视频流,并用video标签播放。** ``` -------------------------------------------------------------- const videoConstraints = { width: 1366, height: 768 }; const videoNode = document.querySelector('#video'); let stream...
# 一、开篇 说起前端组件化是这几年老生常谈的话题,笔者就不在这里对前端组件化思想的发展史、优劣做详细的介绍。今天主要与大家分享一下,笔者在开发中从初期的小项目,到后期的项目功能迭代,功能模块越来越多,项目越来越大,组件化规范制定不够完善,多人团队协作开发导致的一些问题,与笔主自己处理的方案的思考。 # 二、发现、提出问题 ## 1、三张图说明一个业务模块功能迭代图。 ### 第1版 组件单向数据流,父组件状态单向传输子组件  ### 第2版 随着功能迭代,非父子组件会共享一些状态。 此处由于非父子组件间状态共享不复杂,优先使用状态提升(状态提升,我们需要把子组件间共享的状态,提升到容器组件进行管理,并有容器组件下发到子组件)解决此类问题。  ### 第3版 随着更多的功能迭代,模块分层越来越多,跨多层组件状态共享越来越复杂  状态管理redux、vuex就是为了解决此类问题而出现。  通过以上的项目模块迭代周期的发现,不可避免的出现多组件状态共享。 通常处理共享状态有三种方式: 1. 状态提升,我们需要把子组件间共享的状态,提升到容器组件进行管理,并有容器组件下发到子组件。 1. 状态管理redux、vuex。 1. 事件机制,子组件改变共享的状态,通过事件管理模块emit分发出去,需要同步更改状态的子组件通过on接收更改事件。...
# 一、为什么需要用node.js调用dll? 公司项目采用Electron( https://electronjs.org/ )开发pc应用,会涉及到与底层硬件设备的通信,而sdk封装 基本上都是通过 C++ 动态链接库dll实现的。 #### 有两种方案可供选择: - 方案一: 使用node-ffi - 方案二: 使用C++编写一个node addon,通过LoadLibrary调用dll 以上两种方案都可以解决dll调用问题,方案选型要个人对C++ 的掌握程度,如果熟悉C++开发,可以直接选择方案二最方便。如果完全不了解C++,那么只能采用方案一。 由于笔主不太懂C++,最终选择第一种方案。 # 二、什么是node-ffi? (https://www.npmjs.com/package/ffi) node-ffi是使用纯JavaScript加载和调用动态库的node addon,它可以用来在不写任何C++代码的情况下调用动态链接库的API 接口。 ffi究竟干了什么?其实它本质上还是一个编译后的Node addon,node_modules/ffi/build/Release/ffi_bindings.node, ffi_bindings.node就是一个addon ffi充当了nodejs和dll之间的桥梁。...