LinkIt 7688提供了一个友好的登录界面,源代码可以在下面的连接下载到:
https://github.com/MediaTek-Labs/linkit-smart-7688-webUI
翻译文档:
http://blog.csdn.net/hnhkj/article/details/50932118

通过对代码的初步分析:它采用了多种技术,例如:node.js, React组件,jQuery库等javascrip技术。牵扯的内容比较繁杂。如果说是我们希望对这个webUI有一个详细的了解得话,那么我们就要花费一定的时间来学习和搞清楚这些东西。对于一个javascript高手的话,那就另当别论了。对于我们新手的话,那就需要在繁杂的内容当中找到线索,来抽丝剥茧找到技术的核心。这样我们就可以让这个webUI为我所用了。这对于有些人来讲,是非常有用的。
接下来时间内,我会将我的分析心得一点一点记录下来。让有兴趣的朋友能够不走或少走弯路。

该webUI采用node.js编写,采用的是标准的commonJS规范,整个webUI包由多个相关的文件夹组成。编译后生长应用文件到build/目录下。严格来讲,生成的应用文件仍然是javascrip文件,只是对一些格式进行了缩减。我们完全可以通过对应用文件修改来实现功能修改。最便利的方法当然是对源代码进行修改,然后进行编译生成应用代码。webUI的目录结构参考如下:

linkit-smart-7688-webUI文档结构

linkit-smart-7688-webUIappbuild  //编译文件目录7688.png7688_duo.pngen.app.jsmain.cssriona-sans-light.otfriona-sans-medium.otfriona-sans-regular.otfzh-cn.app.jszh-tw.app.jscss // css文件目录main.cssfont  // 字体文件目录riona-sans-light.otfriona-sans-medium.otfriona-sans-regular.otfimg  // 图像文件目录7688.png7688.svg7688_duo.png7688duo.svgmediatek.pnglib  // lib文件目录,核心文件保存在此处actionsappActions.jscomponentscontent.jsxheader.jsxlogin.jsxnetwork.jsxresetpassword.jsxsysinfo.jsxconstantsappConstants.jsdispatchherappDispatcher.jsstoresappStore.jsutilrpcAPI.jsubusStatus.jsapp.jsxlocale  // 本地化目录,首先了中英文显示的对照en.jsonzh-CN.jsonzh-TW.jsonindex.htmlwebpack.client.config.jszh-cn.htmlzh-tw.htmldocsrpc_demo_files  // 测试目录package.jsonwebpack.config.js  

经过初步的分析,webUI的核心代码包含在lib文件夹下。所有的功能是实现都是由目录下面的这些代码来完成的。

linkit-smart-7688-webUI提供的开发环境

对于webUI提供的开发环境,node和npm的安装对于新手来讲是一个挑战。我使用的是ubuntu 12版的,内置了node和npm。但是它们的版本都比较低,不是webUI要求的版本号。因而,整个模拟运行就不能进行下去。一连串的包版本不对应。利用apt-get install node, 这也是抓瞎。对于我的ubuntu来讲,我采用了指定版本的node来安装。至于,npm,我按照它的安装命令。这是我来回折腾了两天才搞定的,累死宝宝了0^0。
下面是我的ubuntu的安装过程:

$ wget https://nodejs.org/dist/v0.10.28/node-v0.10.28.tar.gz
$ tar -xvf node-v0.10.28.tar.gz
$ ./configure
$ make
$ sudo make install$ sudo npm install npm@2.9.0 -g

如此操作,我就顺利安装上了指定版本的node和npm。good,一切就绪,可以开始我们的webUI调试之旅了。

$ git clone https://github.com/MediaTek-Labs/linkit-smart-webUI.git
$ npm i
$ npm run watch

一切并没有想象的那么顺利,又遇到问题卡壳了,显示下面的错误。一头雾水,没有心思看是怎么错误了,这么多的信息,哪里看起?

node v0.10.28 npm v2.9.0

ubuntu@ubuntu-virtual-machine:~/openwrt/linkit-smart-webUI$ sudo npm
run watch

> linkit-smart-7688-webui@0.0.1 watch /home/ubuntu/openwrt/linkit-smart-webUI
> NODE_ENV=dev webpack-dev-server –port 8081 –colors –inline –hot –config ./webpack.config.js

Start building: dev

module.js:340 throw err; ^ Error: Cannot find module
‘./locale/zh-cn’ at Function.Module._resolveFilename
(module.js:338:15) at Function.Module._load (module.js:280:25) at
Module.require (module.js:364:17) at require (module.js:380:17) at
Object.
(/home/ubuntu/openwrt/linkit-smart-webUI/app/webpack.client.config.js:9:12)
at Module._compile (module.js:456:26) at normalLoader
(/home/ubuntu/openwrt/linkit-smart-webUI/node_modules/babel-core/lib/api/register/node.js:199:5)
at Object.require.extensions.(anonymous function) [as .js]
(/home/ubuntu/openwrt/linkit-smart-webUI/node_modules/babel-core/lib/api/register/node.js:216:7)
at Module.load (module.js:356:32) at Function.Module._load
(module.js:312:12) at Module.require (module.js:364:17) at require
(module.js:380:17)

npm ERR! Linux 3.2.0-95-generic-pae npm ERR! argv “node”
“/usr/local/bin/npm” “run” “watch” npm ERR! node v0.10.28 npm ERR!
npm v2.9.0 npm ERR! code ELIFECYCLE npm ERR!
linkit-smart-7688-webui@0.0.1 watch: NODE_ENV=dev webpack-dev-server
--port 8081 --colors --inline --hot --config ./webpack.config.js
npm ERR! Exit status 8 npm ERR! npm ERR! Failed at the
linkit-smart-7688-webui@0.0.1 watch script ‘NODE_ENV=dev
webpack-dev-server –port 8081 –colors –inline –hot –config
./webpack.config.js’. npm ERR! This is most likely a problem with the
linkit-smart-7688-webui package, npm ERR! not with npm itself. npm
ERR! Tell the author that this fails on your system: npm ERR!
NODE_ENV=dev webpack-dev-server –port 8081 –colors –inline –hot
–config ./webpack.config.js npm ERR! You can get their info via: npm ERR! npm owner ls linkit-smart-7688-webui npm ERR! There is
likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR! /home/ubuntu/openwrt/linkit-smart-webUI/npm->debug.log

没有办法,硬着头皮也要上。看吧!万事只要静下心来,就都可以解决。发现了问题的所在。原来是源码的问题,原来是app/webpack.client.config.js引用的./locale/zh-cn 和./locale/zh-tw。但是,在实际的目录下的文件名称是这样子的zh-CN.json和zh-TW.json,大小写不同。找不到指定的文件因而出现了这个问题。果断修改app/webpack.client.config.js,将对应的小写字母改称对应的大写字母。重新运行npm run watch。good,没有错误信息的。

ubuntu@ubuntu-virtual-machine:~/openwrt/hnhkj/linkit-smart-7688-webUI$ npm run watch> linkit-smart-7688-webui@0.0.1 watch /home/ubuntu/openwrt/hnhkj/linkit-smart-7688-webUI
> NODE_ENV=dev webpack-dev-server --port 8081 --colors --inline --hot --config ./webpack.config.jsStart building:  dev
http://localhost:8081/
webpack result is served from http://127.0.0.1:8081/build/
content is served from /home/ubuntu/openwrt/hnhkj/linkit-smart-7688-webUI

这条命令还没有实现,因为我的ubuntu没有安装chrome。在浏览器中键入 http://127.0.0.1:8081/app. ok,显示登录界面了。

$ open -n -a /Applications/Google\ Chrome.app --args --user-data-dir="/tmp/chrome_dev_session" --disable-web-security

还没有完,界面只是登录界面,对登录界面的修改可以得到验证。但是对登录后的界面如何验证,还需要以后再研究!

到目前为止,对app的源代码问题应该不大了,验证也可以慢慢研究了。可是如何将进行修改后的源码编译到build/目录下面哪?这是一个新的问题了。我原来以为readme中的开发流程会自动将源码编译到build中,经过测试并没有实现。经过一番研究,我们需要采用新的方法。

javascrip源码打包

javascrip源码需要经过编译后,生成简化的javascrip代码到build/下面。这种方法大大减小了访问时的数据量。
该webUI采用了webpack工具,Webpack 是一个前端资源加载/打包工具。参考连接https://hulufei.gitbooks.io/react-tutorial/content/webpack.html。经过webpack打包后,jiavascrip源代码被打包到build/目录下。

$ sudo npm install -g webpack
$ sudo npm install -g babel-core babel-preset-es2015 babel-preset-react
$ sudo npm install babel-loader coffee-loader
$ npm run watch

运行webpack自动对源代码进行打包。

ubuntu@ubuntu-virtual-machine:~/openwrt/hnhkj/linkit-smart-7688-webUI$    npm run watch> linkit-smart-7688-webui@0.0.1 watch /home/ubuntu/openwrt/hnhkj/linkit-smart-7688-webUI> NODE_ENV=dev webpack-dev-server --port 8081 --colors --inline --hot --config ./webpack.config.jsStart building:  dev http://localhost:8081/ webpack result is served    from http://127.0.0.1:8081/build/ content is served from    /home/ubuntu/openwrt/hnhkj/linkit-smart-7688-webUI

Openwrt和LinkIt webUI接口

Openwrt提供了新的借口LUCI2,该接口提供ubus技术。这种技术可以使用html+css+js和openwrt进行沟通。

又过了几天的学习,我对LinkIt Smart 7688 webUI有了新的认识。原来,该webUI采用的是openwrt的ubus技术,通过uhttpd-mod-ubus插件进行的服务控制。该方法是通过json数据包实现的对openwrt系统的数据读取。
在rpc_demo_files目录下面有一个测试文件,该测试文件很好地说明了各个功能的实现测试。原来我是多么的无知!

分析总结

对于该webUI的设计,主要存在的技术手段:
1. web技术 html+css+javascript
2. ubus

ubus是核心,做为openwrt服务器对外接口。web技术为前端技术,实现显示介面和控制提交。至于build中的文件,使一种数据的压缩。它是将css, javascript, 图片等信息压缩到了这个目录下面,从而减少了通讯的数据量,提高相应的速度。

对于openwrt的相关技术,后续还会继续分析!至于这个webUI,也会继续分析。分析的结果会持续更新!

如果有志同道合之人,也可分享您的心得。我们共同讨论学习,共同进步。浅显认识,大虾别见笑! 0^0

技术参考:

ubus (OpenWrt micro bus architecture)
https://wiki.openwrt.org/doc/techref/ubus?s[]=ubus
node.js官方网站
https://nodejs.org
commonJS规范
https://webpack.github.io/docs/commonjs.html
React库中文说明
http://reactjs.cn/
jQuery 教程
http://www.w3school.com.cn/jquery/index.asp
javascrip教程
http://www.w3school.com.cn/b.asp
JSON教程
http://www.w3school.com.cn/json/index.asp
XML教程
http://www.w3school.com.cn/x.asp

如果英文好点可以访问http://www.w3schools.com/网站

一点一滴分析LinkIt™ Smart 7688 webUI相关推荐

  1. 一点一滴分析LinkIt Smart 7688 问题汇总

    目录(?)[+] 定义 $ - 指定Ubuntu系统下命令 # - Openwrt下命令 1. 系统编译 1.1 .config文件 openwrt中,make menuconfig生成.config ...

  2. LinkIt Smart 7688 问题汇总

    一点一滴分析LinkIt Smart 7688 问题汇总 2016年03月19日 12:39:06 阅读数:24737 定义 $ - 指定Ubuntu系统下命令 # - Openwrt下命令 1. 系 ...

  3. python产品质量分析_产品评论 使用Python分析Amazon Smart产品评论

    在万物互联时代,智能产品正在推动智能生活的迅速普及.专注于广阔的智能产品市场,亚马逊一直致力于扩大其智能产品阵容.作为典型的跨境电子商务B2C平台 一.明确目标 建模和分析Amazon智能产品评论,探 ...

  4. MT7688 wifi 调试(二) 如何修改ra0 mac地址

    本系列导航: MT7688 wifi 调试 1. 查看ra0 mac地址 # ifconfig -a ra0 ra0 Link encap:Ethernet HWaddr 00:00:00:00:00 ...

  5. 30个物联网产业动向 芯片商也来抢占IoT

    不只软硬件厂商,连芯片巨头.云端科技大厂都通过并购来抢占物联网市场;Amazon AWS 推出物联网云端服务;跨联盟新物联网阵线抱团,要打造通用物联网标准;各国竞相发展 5G,打造亿级物联网应用骨干. ...

  6. 物联网浪潮即将来袭,创业者们你需要知道这些

    想进入物联网市场,你不得不知道这些. 在刚刚结束不久的CES 2016上,我们可以看到很多带有鲜明的物联网烙印的新品.作为一年一度的科技风向标,CES也许在告诉我们2016会是物联网之年. 目前,一些 ...

  7. LattePanda 之深入学习 Firmata通讯

    前言 原创文章,转载引用务必注明链接,水平有限,如有疏漏,欢迎指正. 本文使用Markdown写成,为获得更好的阅读体验和正常的链接.图片显示,请访问我的博客原文: http://www.cnblog ...

  8. mt7688 OpenWrt 编译

    一.OpenWrt源码下载 虚拟机:Ubuntu 16.04 LTS sudo apt install git subversion curl wget gawkgit clone https://g ...

  9. 解决openwrt页面升级中“不支持所上传的文件格式”问题

    本文转自http://www.openwrtdl.com/ 我们在页面升级的时候,可能会遇到"不支持所上传的文件格式请确认选择的文件无误"这个问题,今天说说这个错误的原因和解决方法 ...

最新文章

  1. 分享几个vs code 的几个插件
  2. kibana 更新 索引模式_elasticsearch – 如何在kibana中自动配置索引模式
  3. PyTorch进行神经风格转换/迁移(Neural-Transfer:图像风格迁移)
  4. A*算法的c++实现+opencv动态显示
  5. IDEA忽略不必要提交的文件
  6. 基于脚手架创建react项目
  7. html5 web storage攻击,HTML5安全风险详析之二:Web Storage攻击
  8. 原创-linux下编译器vi、vim的使用技巧
  9. 如何用Pygame写游戏(十七)
  10. Qt——P7 对象树
  11. 【仿某公司前台】 asp安全查询系统
  12. visio阵列_用Visio2010制作最专业的技术流程图教程
  13. B2C商城系统源码 单商户B2C商城系统源码
  14. Java利用POI生成Word、Excel文档转换成PDF,PDF转换成图片
  15. android10颜色,首款采用10bit屏幕即将发布,你了解色深吗?
  16. 安利一个小众又逆天的副业,轻松月入过万
  17. python文件重命名
  18. 【acadres.dll文件丢失怎么办】acadres.dll文件丢失的解决办法
  19. 图像成像原理与相机标定
  20. python输入一个字符、如果是大写字母、转换为小写_python语言 输入一个字母 如果它是一个小写英文字母 则把它转换为对应的大写字母输出?...

热门文章

  1. mysql悲观锁的应用_mysql悲观锁
  2. 性能调优篇:困扰我半年之久的RocketMQ timeout exception 终于破解了
  3. R_circlize包_和弦图
  4. js学习与总结(包含了js中小型项目的截图和代码)(包含了Json、Ajax、Jquery等知识)
  5. 我对WiCoNet,DCFAM,UDA Transformer的理解
  6. Marvell交换芯片88E6390驱动开发
  7. java 图片 rgb_简单的java图片处理——如何用Java读出一张图片的RGB值?
  8. Lind.DDD.Caching分布式数据集缓存介绍
  9. 利用菜单配置文件生成菜单
  10. 日语学习-五十音清音