摘要: 最近网站需要针对百度做 SEO 优化,用 Go 语言写了个测试程序,模拟一下百度的爬虫,看看返回的内容是否正确。 代码很简单,就是发送一个请求,把百度相关的信息放入请求头中即可,代码如下: 运行完上面的程序,会在当前目录下,生成一个 source.txt 文件,内容即抓取过来的网页源代码。 有时候, 阅读全文
posted @ 2019-05-15 19:35 liuhe688 阅读(1336) 评论(0) 推荐(0) 编辑
摘要: 使用 Go 语言,我们可以轻松创建出 Web 服务,这一点比 Node.js 还要简单,今天就来总结一下 Go 语言中 Web 服务的创建方式。 首先,我们需要引入 net/http 这个包来处理 HTTP 请求,然后在指定的端口开启服务,下面来写一个最简单的 Web 服务程序: 上面代码中,我们会 阅读全文
posted @ 2018-08-10 06:33 liuhe688 阅读(511) 评论(0) 推荐(0) 编辑
摘要: 在上一篇中,我们根据命令行的 URL 参数输入,抓取对应的网页内容并保存到本地磁盘,今天来记录一下如何利用并发,来抓取多个站点的网页内容。 首先,我们在上一次代码的基础上稍作改造,使它能够获取多个站点的内容。下面代码中,我们首先定义好三个 URL,然后逐个发送网络请求,获取数据并保存,最后统计消耗的 阅读全文
posted @ 2018-08-08 13:01 liuhe688 阅读(1707) 评论(0) 推荐(0) 编辑
摘要: 今天写个简单的程序,根据指定的 URL 来抓取相应的网页内容,然后存入本地文件。这个程序会涉及到网络请求和文件操作等知识点,下面是实现代码: 上面的代码中,我们引入了 net/http 网络包,然后调用 http.Get(url) 方法获取 URL 对应的资源,之后读取出资源数据,然后在控制台打印, 阅读全文
posted @ 2018-08-07 07:59 liuhe688 阅读(5514) 评论(0) 推荐(0) 编辑
摘要: 上次我们从命令行接收用户输入,并统计了每次输入内容出现的次数,今天对程序加以改造,使其能够读取文件内容,并统计每行文本出现的次数。 首先,我们把接收输入的逻辑封装成一个函数: 上面的 coutLines() 函数有两个参数:file os.File 和 counts map[string]int,第 阅读全文
posted @ 2018-08-05 12:53 liuhe688 阅读(1135) 评论(0) 推荐(0) 编辑
摘要: 上次我们介绍了收集命令行参数的几种方式,感觉还是不过瘾,今天再来介绍一下如何从命令行接收用户输入。 我们这里设计一个小需求,借助程序从命令行收集用户的逐行输入,以 为结束信号,然后在输入结束后,统计每一行输入的内容和该内容出现的次数。 为了完成这个功能,我们首先需要创建一个 的数据结构,来存放每一行 阅读全文
posted @ 2018-08-03 07:42 liuhe688 阅读(9960) 评论(0) 推荐(0) 编辑
摘要: 记得最早在学校机房学习 Java 时,照着书上的例子,写一个最简单 main 方法,当程序运行并在屏幕上打印出 hello world 时,内心竟有种莫名的激动,相信很多人都有这种经历吧。 不管学什么编程语言,都先从命令行程序搞起。 首先,我们来写一个 Go 语言版的 hello world 程序: 阅读全文
posted @ 2018-08-02 07:36 liuhe688 阅读(1273) 评论(0) 推荐(0) 编辑
摘要: 上次我们分析了无状态组件生成 DOM 的过程,无状态组件其实就是纯函数,它不维护内部的状态,只是根据外部输入,输出一份视图数据。而今天我们介绍的有状态组件,它有内部的状态,因此在组件的内部,可以自行对状态进行更改,进而渲染出新的视图。下面我们就来分析有状态组件生成真实 DOM 结点的过程。 我们先来 阅读全文
posted @ 2018-07-26 13:40 liuhe688 阅读(572) 评论(0) 推荐(0) 编辑
摘要: 在上一篇文章中,我们总结并模拟了 JSX 生成真实 DOM 结点的过程,今天接着来介绍一下无状态组件的生成过程。 先以下面一段简单的代码举例: js const Greeting = function ({name}) { return { }; }; const App = ; console.l 阅读全文
posted @ 2018-07-21 23:18 liuhe688 阅读(856) 评论(0) 推荐(0) 编辑
摘要: 在上一篇文章中,我们介绍了 Babel 是如何将 JSX 代码编译成可执行代码的,随后也实现了一个自己的解析器,模拟了 Babel 编译的过程。 现在我们再来回顾一下,假定有如下业务代码: js const style = { color: 'red', fontSize: '20px', }; c 阅读全文
posted @ 2018-07-15 23:16 liuhe688 阅读(2068) 评论(0) 推荐(0) 编辑
摘要: 上次我们总结了 React 代码构建后的 webpack 模块组织关系,今天来介绍一下 Babel 编译 JSX 生成目标代码的一些规则,并且写一个简单的解析器,模拟整个生成的过程。 我们还是拿最简单的代码举例: 这段代码在经过Babel编译后,会生成如下可执行代码: 看的出来,App 是一个 JS 阅读全文
posted @ 2018-07-13 13:04 liuhe688 阅读(2604) 评论(0) 推荐(1) 编辑
摘要: 现代前端开发离不开打包工具,以 webpack 为代表的打包工具已经成为日常开发必备之利器,拿 React 技术栈为例,我们 ES6 形式的源代码,需要经过 webpack 和 Babel 处理,才能生成发布版文件,在浏览器中运行。今天就结合 React 来梳理一下 webpack 打包时模块的组织 阅读全文
posted @ 2018-07-07 23:13 liuhe688 阅读(420) 评论(0) 推荐(0) 编辑
摘要: Process模块 (Features of Process) is a global variable which indicates the current Node.js process. It is actually an instance of , which is used to sub 阅读全文
posted @ 2018-06-10 08:29 liuhe688 阅读(228) 评论(0) 推荐(0) 编辑
摘要: In normal development, we are likely to use 'console.log' for message logging, yet it’s simple, we are unfortunately not able to persist the messages 阅读全文
posted @ 2018-05-30 12:37 liuhe688 阅读(481) 评论(0) 推荐(0) 编辑
摘要: CLI, as an abbreviation of Command-line Interface, can receive user's input and give an immediate response in terminal. In Node.js, globally installed 阅读全文
posted @ 2018-05-05 19:45 liuhe688 阅读(198) 评论(0) 推荐(0) 编辑