- 史上最全!Python爬虫requests库(附案例)
疯狂的超级玛丽
PythonPython学习Python入门python爬虫开发语言学习Python基础python自学
1.requests库简介如果你正在学习Python并且找不到方向的话可以试试我这一份学习方法+籽料呀!点击领取(不要米米)Requests是一个为人类设计的简单而优雅的HTTP库。requests库是一个原生的HTTP库,比urllib3库更为容易使用。requests库发送原生的HTTP1.1请求,无需手动为URL添加查询串,也不需要对POST数据进行表单编码。相对于urllib3库,requ
- vscode 极简Linux下 cmake c++开发环境
丘狸尾
vscodelinuxc++
安装这三插件vscode安装插件clangd后报错无法自动下载服务端Failedtoinstallclangdlanguageserver:FetchError:requesttohttps://api.github.com/repos/clangd/clangd/releases/latestfailed,reason:Failedtoestablishasocketconnectiontopr
- HCI_Inquiry
打个工而已
AndroidBluetoothjavapythonhtml
目录Android11发起搜索流程BluedroidHCI_Inquiry处理搜索结果处理Android11发起搜索流程BluedroidHCI_Inquiry处理搜索结果处理参考资料:Inquiryisusedtodetectandcollectnearbydevices。Inquiry用于发现搜集附近的蓝牙设备大概意思就是:1.主动发现设备的会sendinquiryrequest2.待被发现的
- 关于 python 的 http 客户端的默认请求头测试 —— requests、httpx、curl_cffi
python
开始测试首先测试requests测试代码importrequests#发起HTTPGET请求url="http://xxx.xxx.xxx.xxx:8086"response=requests.get(url)#打印结果print("ResponseContent(bytes):",response.content)print("ResponseText(str):",response.text)
- 【0394】Postgres内核 (checkpoint)执行一个 checkpoint ④
内核之道
#▲进阶篇CHECKPOINT执行checkpoint
文章目录1.获取requestflags1.1发出警告1.2获取XLOGinsertlocation2.开始执行一个checkpoint1.获取requestflags以原子操作的方式获取请求标志,以明确我们应当执行何种类型的checkpoint,并增加启动计数器,以表明我们已开始新的检查点。由于CheckpointerShmem中的ckpt_flags为0,所以或运算之后,flags值未改变(f
- bizhan爬虫,反爬虫机制严重
yzx991013
爬虫
importosimportreimportrequestsimportjsonimportsubprocessfromlxmlimportetreefromtimeimportsleep#请求头信息header={"referer":"https://www.bilibili.com","user-agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)Apple
- selenium处理点选验证码---图灵
小小白学Py
seleniumpython测试工具
#-*-coding:utf-8-*-importtime,os,base64,json,requests#pipinstallpillowfromPILimportImagefromseleniumimportwebdriver#读取ini文件当中的数据fromconfigparserimportConfigParserfromselenium.webdriver.common.byimport
- Python 网络爬虫进阶:动态网页爬取与反爬机制应对
m0_74824534
python爬虫开发语言
在上一篇文章中,我们学习了如何使用Python构建一个基本的网络爬虫。然而,在实际应用中,许多网站使用动态内容加载或实现反爬机制来阻止未经授权的抓取。因此,本篇文章将深入探讨以下进阶主题:如何处理动态加载的网页内容应对常见的反爬机制爬虫性能优化通过具体实例,我们将探讨更复杂的网络爬虫开发技巧。一、动态网页爬取现代网页通常通过JavaScript加载动态内容。直接使用requests获取的HTML可
- Python+Requests接口分层自动化测试框架
丁鱼教育
Python自动化测试requestspython
阅读本小节,需要读者具备如下前提条件:1.掌握一种编程语言基础,如java、python等。2.掌握一种单元测试框架,如java语言的testng框架、python的unittest框架。3.掌握目前主流的UI测试框架,移动端APP测试框架Appium,或者掌握Web端测试框架Selenium。4.如果是Appium框架,还需要掌握如何定位控件元素,原生页面可使用安卓SDK自带的uiautomat
- Python爬虫入门教程:超级简单的Python爬虫教程
梦子mengy7762
爬虫python数据分析python爬虫htmlpycharmvisualstudio
这是一篇详细介绍[Python]爬虫入门的教程,从实战出发,适合初学者。读者只需在阅读过程紧跟文章思路,理清相应的实现代码,30分钟即可学会编写简单的Python爬虫。这篇Python爬虫教程主要讲解以下5部分内容:了解网页;使用requests库抓取网站数据;使用BeautifulSoup解析网页;清洗和组织数据;爬虫攻防战;了解网页以中国旅游网首页为例,抓取中国旅游网首页首条信息(标题和链接)
- requestAnimationFrame
前端javascript
requestAnimationFrame,字面含义请求动画帧,其用法跟setTimeout差不多,与setTimeout相比,最大的优点就是由浏览器来决定执行的时间用法:window.requestAnimationFrame(function(){})注:当我看到博主十万条数据加载到页面结合回调函数使用的时候,所以防止以后忘记,特此记录这是从博主那学习的新方法:https://juejin.c
- python 爬虫学习
lally.
python爬虫学习
目录requst库访问HTML语言常用HTML标签结构性标签文本格式化标签超链接与图像列表标签HTML练习BeautifulSoup处理数据requst库访问fromrequestsimport*response=get("https://19j.tv/")print(response)若访问成功,状态码为200,访问失败,则查询状态码,http和https的状态码是一样的http状态码可以采取伪
- 使用python+pytest+requests完成自动化接口测试(包括html报告的生成和日志记录以及层级的封装(包括调用Json文件))
小明学编程`
python自动化测试pytest自动化接口测试接口测试html报告生成requests
一、API的选择我们进行接口测试需要API文档和系统,我们选择JSONPlaceholder免费API,因为它是一个非常适合进行接口测试、API测试和学习的工具。它免费、易于使用、无需认证,能够快速帮助开发者模拟常见的接口操作(增、删、改、查)。尤其对于我你们学习接口测试的初学开发者来说,它是一个理想的选择。注意:这个API网站当我们发送请求时他不会真的实现我们的请求,他只会会虚拟实现我们的请求,
- JPA使用原生SQL实现分页查询、排序
weixin_45834569
sqlhibernate数据库
1.使用PageRequest.of静态方法创建一个PageRequest对象或者Pageable接口;PageablepageRequest=PageRequest.of();2.传入分页和排序的参数;intpage=10;intsize=5;PageRequestpageRequest=PageRequest.of(page,size,Sort.by("account"));3.使用@Quer
- 深入浅出: XML HttpRequest 入门指南
XMLHttpRequest(XHR)技术是构建动态、响应式网站的关键。这项技术使得网页能在不重新加载整个页面的情况下与服务器进行数据交互,极大地优化了用户的交互体验。定义XMLHttpRequestXMLHttpRequest是一种浏览器与服务器进行数据交换的API。尽管它的名字包含“XML”,XHR实际上支持多种数据格式,如JSON、HTML和纯文本等。初期,它主要用于处理XML格式数据,但随
- jpa知识点
The_Best_Hacker
Jpa分页
1.分页publicstaticPageRequestof(intpage,intsize,Directiondirection,String...properties){returnof(page,size,Sort.by(direction,properties));}官方API说明:since2.0,useof(...)instead,2.0版本后,使用of(...)方法代替PageRequ
- 《Python实现简易DDoS压力测试脚本:原理、代码与使用警示》
乐茵安全
python_studychrome前端python网络安全
DDoS测试脚本声明:本文所涉及代码仅供学习使用,任何人利用此造成的一切后果与本人无关源码import requestsimport threading# 目标URLtarget_url = "http://47.121.xxx.xxx/"# 发送请求的函数def send_request(): while True: try: response = re
- 使用Flask框架实现前后端交互,直接打开html页面无法显示后端传入的数据问题Access to XMLHttpRequest at ‘http://127.0.0.1:5000/***‘ from
小刘 同学
flaskpython后端
出现CORS(跨源资源共享)问题是因为前端页面和Flask后端不在同一个源(即不同的端口或域名)。为了解决这个问题,可以在Flask中设置CORS头。你可以使用flask-cors这个库来简化配置。安装flask-cors首先,安装flask-cors:pipinstallflask-cors更新Flask应用然后,在你的Flask应用中引入并配置CORS:fromflaskimportFlask
- [Java] 三种Java接收参数的方式的详细说明
Java应用接收到请求,获取请求参数。按形式分类,纯粹的独立的情况,就三类1、query传参形如GETapi/notice?id=1232、requestBody传参形如POSTapi/notice+requestBody3、路径变量传参形如GETapi/notice/{id}(注意:可以有组合使用的情况出现)1、query传参@GetMapping+@RequestParam接收参数假如后端接收
- 正确解决No ‘Access-Control-Allow-Origin’ header is present on the requested resource异常的有效解决方法
飞码创造者
解决bug开发语言vue.js前端bug
正确解决No‘Access-Control-Allow-Origin’headerispresentontherequestedresource异常的有效解决方法文章目录报错问题报错原因解决方法报错问题No‘Access-Control-Allow-Origin’headerispresentontherequestedresource异常
- Nginx 如何设置 Upgrade-Insecure-Requests 报头 ?
nginx
Upgrade-Insecure-Requests报头是一种web浏览器向服务器发出信号的机制,它倾向于接收安全(HTTPS)资源。添加此报头有助于在受支持的浏览器上将不安全的请求升级为安全的请求。Step1:定位Nginx配置主nginx配置文件通常位于/etc/nginx/nginx.conf特定于站点的配置通常在/etc/nginx/sites-available/Step2:编辑Nginx
- requests库的安装和使用指南
Requests库安装与使用指南Requests是一个功能强大且易于使用的PythonHTTP库,广泛应用于发送各种HTTP请求,如GET、POST等。以下内容将详细介绍Requests库的安装和使用方法,帮助您高效地在Python中进行HTTP操作。️安装Requests库要使用Requests库,首先需要确保已安装pip工具。然后,在终端或命令行中运行以下命令进行安装:pipinstallre
- 深入解析 Spring Security 配置中的 CSRF 启用与 `requestMatchers` 报错问题
深入解析SpringSecurity配置中的CSRF启用与requestMatchers报错问题最近在配置SpringSecurity的过程中,有小伙伴遇到了关于CSRF启用与路径匹配器requestMatchers的相关问题。本文将从问题的根源出发,分析SpringSecurity不同版本中的变化,同时提供详细的解决方案。希望这篇博客能帮助大家快速解决类似问题,并深入理解SpringSecuri
- requests库的安装和使用指南
Requests库安装与使用指南Requests是一个简洁且功能强大的Python库,用于发送HTTP请求。它广泛应用于数据采集、API调用等场景。本文将详细介绍Requests库的安装与基本使用方法,并通过实例和图表帮助您快速掌握其核心功能。目录安装Requests库导入Requests库发送GET请求发送POST请求添加Headers处理响应处理JSON响应异常处理附加参数会话管理文件下载工作
- springmvc的获取请求数据
代码代码快快显灵
springmvcjava开发语言springMVC后端
在使用SpringMVC开发web应用时,我们经常需要从用户的请求中获取数据。不管是表单提交、查询参数,还是路径上的数据,SpringMVC都为我们提供了简单而强大的方式来获取这些数据。1.使用@RequestParam获取查询参数基本使用:RequestParam注解作用:将请求参数与方法上的形参映射。最常见的情况就是获取请求路径中的查询参数,比如?name=Grace&age=25。在Spri
- Python教程:一文了解使用Python处理XPath
旦莫
Python进阶python开发语言
目录1.环境准备1.1安装lxml1.2验证安装2.XPath基础2.1什么是XPath?2.2XPath语法2.3示例XML文档3.使用lxml解析XML3.1解析XML文档3.2查看解析结果4.XPath查询4.1基本路径查询4.2使用属性查询4.3查询多个节点5.XPath的高级用法5.1使用逻辑运算符5.2使用函数6.实战案例6.1从网页抓取数据6.1.1安装Requests库6.1.2代
- 利用Requests Toolkit轻松完成HTTP请求
nseejrukjhad
http网络协议网络python
RequestsToolkit的力量:轻松构建HTTP请求Agent在现代软件开发中,API请求是与外部服务交互的核心。RequestsToolkit提供了一种便捷的方式,帮助开发者构建自动化的HTTP请求Agent。本文旨在详细介绍RequestsToolkit的设置、使用和潜在挑战。引言RequestsToolkit是一个强大的工具包,可用于构建执行HTTP请求的智能代理。这对于想要自动化与外
- ARM驱动学习之5 LEDS驱动
JT灬新一
嵌入式C底层arm开发学习单片机
ARM驱动学习之5LEDS驱动知识点:•linuxGPIO申请函数和赋值函数–gpio_request–gpio_set_value•三星平台配置GPIO函数–s3c_gpio_cfgpin•GPIO配置输出模式的宏变量–S3C_GPIO_OUTPUT注意点:DRIVER_NAME和DEVICE_NAME匹配。实现步骤:1.加入需要的头文件://Linux平台的gpio头文件#include//三
- Python神器!WEB自动化测试集成工具 DrissionPage
亚丁号
python开发语言
一、前言用requests做数据采集面对要登录的网站时,要分析数据包、JS源码,构造复杂的请求,往往还要应付验证码、JS混淆、签名参数等反爬手段,门槛较高。若数据是由JS计算生成的,还须重现计算过程,体验不好,开发效率不高。使用浏览器,可以很大程度上绕过这些坑,但浏览器运行效率不高。因此,这个库设计初衷,是将它们合而为一,能够在不同须要时切换相应模式,并提供一种人性化的使用方法,提高开发和运行效率
- 00. 这里整理了最全的爬虫框架(Java + Python)
有一只柴犬
爬虫系列爬虫javapython
目录1、前言2、什么是网络爬虫3、常见的爬虫框架3.1、java框架3.1.1、WebMagic3.1.2、Jsoup3.1.3、HttpClient3.1.4、Crawler4j3.1.5、HtmlUnit3.1.6、Selenium3.2、Python框架3.2.1、Scrapy3.2.2、BeautifulSoup+Requests3.2.3、Selenium3.2.4、PyQuery3.2
- 解读Servlet原理篇二---GenericServlet与HttpServlet
周凡杨
javaHttpServlet源理GenericService源码
在上一篇《解读Servlet原理篇一》中提到,要实现javax.servlet.Servlet接口(即写自己的Servlet应用),你可以写一个继承自javax.servlet.GenericServletr的generic Servlet ,也可以写一个继承自java.servlet.http.HttpServlet的HTTP Servlet(这就是为什么我们自定义的Servlet通常是exte
- MySQL性能优化
bijian1013
数据库mysql
性能优化是通过某些有效的方法来提高MySQL的运行速度,减少占用的磁盘空间。性能优化包含很多方面,例如优化查询速度,优化更新速度和优化MySQL服务器等。本文介绍方法的主要有:
a.优化查询
b.优化数据库结构
- ThreadPool定时重试
dai_lm
javaThreadPoolthreadtimertimertask
项目需要当某事件触发时,执行http请求任务,失败时需要有重试机制,并根据失败次数的增加,重试间隔也相应增加,任务可能并发。
由于是耗时任务,首先考虑的就是用线程来实现,并且为了节约资源,因而选择线程池。
为了解决不定间隔的重试,选择Timer和TimerTask来完成
package threadpool;
public class ThreadPoolTest {
- Oracle 查看数据库的连接情况
周凡杨
sqloracle 连接
首先要说的是,不同版本数据库提供的系统表会有不同,你可以根据数据字典查看该版本数据库所提供的表。
select * from dict where table_name like '%SESSION%';
就可以查出一些表,然后根据这些表就可以获得会话信息
select sid,serial#,status,username,schemaname,osuser,terminal,ma
- 类的继承
朱辉辉33
java
类的继承可以提高代码的重用行,减少冗余代码;还能提高代码的扩展性。Java继承的关键字是extends
格式:public class 类名(子类)extends 类名(父类){ }
子类可以继承到父类所有的属性和普通方法,但不能继承构造方法。且子类可以直接使用父类的public和
protected属性,但要使用private属性仍需通过调用。
子类的方法可以重写,但必须和父类的返回值类
- android 悬浮窗特效
肆无忌惮_
android
最近在开发项目的时候需要做一个悬浮层的动画,类似于支付宝掉钱动画。但是区别在于,需求是浮出一个窗口,之后边缩放边位移至屏幕右下角标签处。效果图如下:
一开始考虑用自定义View来做。后来发现开线程让其移动很卡,ListView+动画也没法精确定位到目标点。
后来想利用Dialog的dismiss动画来完成。
自定义一个Dialog后,在styl
- hadoop伪分布式搭建
林鹤霄
hadoop
要修改4个文件 1: vim hadoop-env.sh 第九行 2: vim core-site.xml <configuration> &n
- gdb调试命令
aigo
gdb
原文:http://blog.csdn.net/hanchaoman/article/details/5517362
一、GDB常用命令简介
r run 运行.程序还没有运行前使用 c cuntinue 
- Socket编程的HelloWorld实例
alleni123
socket
public class Client
{
public static void main(String[] args)
{
Client c=new Client();
c.receiveMessage();
}
public void receiveMessage(){
Socket s=null;
BufferedRea
- 线程同步和异步
百合不是茶
线程同步异步
多线程和同步 : 如进程、线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B依言执行,再将结果给A;A再继续操作。 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回,同时其它线程也不能调用这个方法
多线程和异步:多线程可以做不同的事情,涉及到线程通知
&
- JSP中文乱码分析
bijian1013
javajsp中文乱码
在JSP的开发过程中,经常出现中文乱码的问题。
首先了解一下Java中文问题的由来:
Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,
- js实现页面跳转重定向的几种方式
bijian1013
JavaScript重定向
js实现页面跳转重定向有如下几种方式:
一.window.location.href
<script language="javascript"type="text/javascript">
window.location.href="http://www.baidu.c
- 【Struts2三】Struts2 Action转发类型
bit1129
struts2
在【Struts2一】 Struts Hello World http://bit1129.iteye.com/blog/2109365中配置了一个简单的Action,配置如下
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configurat
- 【HBase十一】Java API操作HBase
bit1129
hbase
Admin类的主要方法注释:
1. 创建表
/**
* Creates a new table. Synchronous operation.
*
* @param desc table descriptor for table
* @throws IllegalArgumentException if the table name is res
- nginx gzip
ronin47
nginx gzip
Nginx GZip 压缩
Nginx GZip 模块文档详见:http://wiki.nginx.org/HttpGzipModule
常用配置片段如下:
gzip on; gzip_comp_level 2; # 压缩比例,比例越大,压缩时间越长。默认是1 gzip_types text/css text/javascript; # 哪些文件可以被压缩 gzip_disable &q
- java-7.微软亚院之编程判断俩个链表是否相交 给出俩个单向链表的头指针,比如 h1 , h2 ,判断这俩个链表是否相交
bylijinnan
java
public class LinkListTest {
/**
* we deal with two main missions:
*
* A.
* 1.we create two joined-List(both have no loop)
* 2.whether list1 and list2 join
* 3.print the join
- Spring源码学习-JdbcTemplate batchUpdate批量操作
bylijinnan
javaspring
Spring JdbcTemplate的batch操作最后还是利用了JDBC提供的方法,Spring只是做了一下改造和封装
JDBC的batch操作:
String sql = "INSERT INTO CUSTOMER " +
"(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";
- [JWFD开源工作流]大规模拓扑矩阵存储结构最新进展
comsci
工作流
生成和创建类已经完成,构造一个100万个元素的矩阵模型,存储空间只有11M大,请大家参考我在博客园上面的文档"构造下一代工作流存储结构的尝试",更加相信的设计和代码将陆续推出.........
竞争对手的能力也很强.......,我相信..你们一定能够先于我们推出大规模拓扑扫描和分析系统的....
- base64编码和url编码
cuityang
base64url
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
- web应用集群Session保持
dalan_123
session
关于使用 memcached 或redis 存储 session ,以及使用 terracotta 服务器共享。建议使用 redis,不仅仅因为它可以将缓存的内容持久化,还因为它支持的单个对象比较大,而且数据类型丰富,不只是缓存 session,还可以做其他用途,一举几得啊。1、使用 filter 方法存储这种方法比较推荐,因为它的服务器使用范围比较多,不仅限于tomcat ,而且实现的原理比较简
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']
dcj3sjt126com
数据库
public function getMinLimit () { $sql = "..."; $result = yii::app()->db->createCo
- solr StatsComponent(聚合统计)
eksliang
solr聚合查询solr stats
StatsComponent
转载请出自出处:http://eksliang.iteye.com/blog/2169134
http://eksliang.iteye.com/ 一、概述
Solr可以利用StatsComponent 实现数据库的聚合统计查询,也就是min、max、avg、count、sum的功能
二、参数
- 百度一道面试题
greemranqq
位运算百度面试寻找奇数算法bitmap 算法
那天看朋友提了一个百度面试的题目:怎么找出{1,1,2,3,3,4,4,4,5,5,5,5} 找出出现次数为奇数的数字.
我这里复制的是原话,当然顺序是不一定的,很多拿到题目第一反应就是用map,当然可以解决,但是效率不高。
还有人觉得应该用算法xxx,我是没想到用啥算法好...!
还有觉得应该先排序...
还有觉
- Spring之在开发中使用SpringJDBC
ihuning
spring
在实际开发中使用SpringJDBC有两种方式:
1. 在Dao中添加属性JdbcTemplate并用Spring注入;
JdbcTemplate类被设计成为线程安全的,所以可以在IOC 容器中声明它的单个实例,并将这个实例注入到所有的 DAO 实例中。JdbcTemplate也利用了Java 1.5 的特定(自动装箱,泛型,可变长度
- JSON API 1.0 核心开发者自述 | 你所不知道的那些技术细节
justjavac
json
2013年5月,Yehuda Katz 完成了JSON API(英文,中文) 技术规范的初稿。事情就发生在 RailsConf 之后,在那次会议上他和 Steve Klabnik 就 JSON 雏形的技术细节相聊甚欢。在沟通单一 Rails 服务器库—— ActiveModel::Serializers 和单一 JavaScript 客户端库——&
- 网站项目建设流程概述
macroli
工作
一.概念
网站项目管理就是根据特定的规范、在预算范围内、按时完成的网站开发任务。
二.需求分析
项目立项
我们接到客户的业务咨询,经过双方不断的接洽和了解,并通过基本的可行性讨论够,初步达成制作协议,这时就需要将项目立项。较好的做法是成立一个专门的项目小组,小组成员包括:项目经理,网页设计,程序员,测试员,编辑/文档等必须人员。项目实行项目经理制。
客户的需求说明书
第一步是需
- AngularJs 三目运算 表达式判断
qiaolevip
每天进步一点点学习永无止境众观千象AngularJS
事件回顾:由于需要修改同一个模板,里面包含2个不同的内容,第一个里面使用的时间差和第二个里面名称不一样,其他过滤器,内容都大同小异。希望杜绝If这样比较傻的来判断if-show or not,继续追究其源码。
var b = "{{",
a = "}}";
this.startSymbol = function(a) {
- Spark算子:统计RDD分区中的元素及数量
superlxw1234
sparkspark算子Spark RDD分区元素
关键字:Spark算子、Spark RDD分区、Spark RDD分区元素数量
Spark RDD是被分区的,在生成RDD时候,一般可以指定分区的数量,如果不指定分区数量,当RDD从集合创建时候,则默认为该程序所分配到的资源的CPU核数,如果是从HDFS文件创建,默认为文件的Block数。
可以利用RDD的mapPartitionsWithInd
- Spring 3.2.x将于2016年12月31日停止支持
wiselyman
Spring 3
Spring 团队公布在2016年12月31日停止对Spring Framework 3.2.x(包含tomcat 6.x)的支持。在此之前spring团队将持续发布3.2.x的维护版本。
请大家及时准备及时升级到Spring
- fis纯前端解决方案fis-pure
zccst
JavaScript
作者:zccst
FIS通过插件扩展可以完美的支持模块化的前端开发方案,我们通过FIS的二次封装能力,封装了一个功能完备的纯前端模块化方案pure。
1,fis-pure的安装
$ fis install -g fis-pure
$ pure -v
0.1.4
2,下载demo到本地
git clone https://github.com/hefangshi/f