20181028_ARTS_week18

第十八周,算法题 Implement strStr(),看了一篇介绍 HTML5 开源视频播放组件的文章,介绍了 ES6 中模板字符串的用法,分享了这周在做 angularJS 相关重构的时候对 angularJS 的一些想法。

Algorithm

/**
 * Implement strStr()
 * https://leetcode.com/problems/implement-strstr/
 * 
 * @param {string} haystack
 * @param {string} needle
 * @return {number}
 */
var strStr = function (haystack, needle) {
    var step = needle.length;
    var len = haystack.length;
    var i = 0;

    // when needle is an empty string
    // if (step == 0) {
    //     return 0;
    // }

    while (step <= len) {
        if (needle == haystack.substring(i, i+step)) {
            return i
        }
        i += 1;
        len -= 1;
    }

    return -1
};

console.log(strStr("hello", "ll"))
console.log(strStr("aaaaa", "bba"))

比较简单的题目,第一反应直接可以用自带的 indexOf 之类的去解决。除此之外就可以用个 while 循环一个个比一下就搞定了。

Review

5 Open Source HTML5 Video Players for 2018

https://blog.bitsrc.io/5-open-source-html5-video-players-for-2018-38fa85932afb

文章介绍了 5 个开源基于 HTML 的视频播放组件。

随着移动网络速度的提高和资费的降低,视频的需求也越来越旺盛,作者先是说了几个用开源视频播放组件的好处,基本上都是大家知道的,比如免费。之后介绍了 5 个播放组件,分别是 Plyr, Video.js, Afterglow, MediaElement.js, jPlayer。

这里面我只用过 jPlayer,感觉还不错,挺简单的。

Tip

介绍一下 ES6 里面的模板字符串。

以前我们要组合一些字符串是这样做的:

var firstName = 'Jake';
var lastName = 'Rawr';
console.log('My name is ' + firstName + ' ' + lastName);
// My name is Jake Rawr**

非常蛋疼,偏偏经常要组合字符串。

ES6 后可以这样做:

var firstName = 'Jake';
var lastName = 'Rawr';
console.log(`My name is ${firstName} ${lastName}`);
// My name is Jake Rawr

然后这个里面还可以做点运算:

var val1 = 1, val2 = 2;
console.log(`${val1} is ${val1 < val2 ? 'less than': 'greater than'} ${val2}`)
// 1 is less than 2

我个人不建议把复杂运算放这里做,代码看起来很奇怪,不优雅。

来源 https://www.jstips.co/en/javascript/template-strings/

Share

公司以前有个老项目使用 angularJS (angularJS 不是 Angular,也就是 1.0)做的,这周准备对它进行一些重构,改为用 Vue 来做。做之前当然需要去了解下 angularJS 的东东。

现在网上对 angularJS 可以说是『鄙视』了,什么老啊,旧啊,性能不好啊,工程化不完善啊等等。站在今天来看,跟今天的很多前端框架比,angularJS 的确已经落伍。

但要知道 angularJS 大概是 2008 年推出的,几乎是 node 差不多时间。站在那时候看 angularJS 还是非常先进的,组件,模板,依赖倒转,自动更新……这些在当时可以说是杀手级的特性了。

只是时代变迁,可能是开发的时候缺乏 node 之类的编译打包工具,所以 angularJS 写出的页面非常臃肿,一堆 js 文件以及模板要做异步加载,非常影响性能和打开速度。

很多东西都是演化来的,在今天我们站在制高点怼天怼地怼框架的时候,想想框架出来的时机,以及大环境,这是前端最好的时代,也是前端最坏的时代。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏点滴积累

geotrellis使用(四十二)将 Shp 文件转为 GeoJson

原因很多,最重要的原因是我转行了。是的,我离开了开发岗位,走向了开发的天敌-产品经理。虽然名义上是产品经理,但是干的事情也很杂,除了不写代码,其他的都干,经常还...

21820
来自专栏牛客网

字节跳动Android校招面试

Handler、MessageQueue等一套东西讲一下,详细说了下源码。为什么主线程loop不会ANR?ThreadLocal原理。

33620
来自专栏Python中文社区

微信小程序头脑王者辅助神器

起步 最近直播答题火热,群里也经常看到比拼微信小程序《头脑王者》。我比较笨,凭纯答题只到了黑金段位。鉴于本周刚刚点亮了收集抓包的技能,于是想试着通过这个来做一个...

60780
来自专栏C/C++基础

面向对象设计原则(1)——学习使用设计模式

设计模式(Design Pattern)是一套被反复使用、多数人知晓、分类编目、代码设计经验的总结。使用设计模式是为了提高代码的可复用性、可扩充性可维护性,让代...

8430
来自专栏封碎

两个最容易被人忽略的基本代码优化技术 博客分类: 经典文章转载 算法Android编程D语言工作

      本文转载自http://sd.csdn.net/a/20100921/279732.html

10330
来自专栏逍遥剑客的游戏开发

星际2中复刻DOTA白虎

20520
来自专栏数据科学与人工智能

【陆勤践行】Python和数据科学的起步指南

Python拥有着极其丰富且稳定的数据科学工具环境。遗憾的是,对不了解的人来说这个环境犹如丛林一般(cue snake joke)。在这篇文章中,我会一步一步指...

265100
来自专栏葬爱家族

Android高德之旅(10)绘制热力图废话总结

热力图,这个词可能有点生僻,它表示的是统计数据在一定区域内的分布集中情况,这是一种非常清晰的展示方式,可以让使用者直观地看出事物热度分布。

18530
来自专栏牛客网

阿里2018暑期实习内推面经(Java岗),offer已拿到

整个三月份通过牛客网和网友分享的经验学到了很多东西,现在反馈一下我的面试经历,希望对同学们有帮助。 个人情况:大三本EE方向渣硕,经过实验室学长内推,于三月底完...

87350
来自专栏非典型技术宅

iOS传感器:利用磁力计完成一个AR场景应用1. 磁力计的介绍2. 磁力计的使用3. 开始我们的小案例

23240

扫码关注云+社区

领取腾讯云代金券