sprite框架之通过require.js实现VueRouter对象的动态生成(四)

上一篇sprite框架的文章介绍了如何通过require.js来实现javascirpt的模块化开发。

本篇文章主要介绍如何通过require.js的模块化能力来实现VueRouter对象的动态生成,这也是实现sprite框架的最核心的思想。

VueRouter是什么?

之前的文章里有提到过VueRouter是一个基于vue的前端路由框架,先来简单介绍下VueRouter。

VueRouter的主要作用是通过一些配置,将一个个前端url路径(即hash路由)映射到一个个vue对象上去,并且监听前端的路由变化,找到当前路径对应的vue对象来进行页面渲染以及业务逻辑控制。

要想构造一……

阅读更多

vue是如何实现双向绑定的

用过vue的开发者肯定都暗爽于双向绑定带来的便利,但是就像那句话说的一样

哪有什么岁月静好,只是有人替你负重前行。

虽然我们用的方便,那可是vue辛苦换来的。

这篇文章就来简单介绍一下vue是如何实现双向绑定的。

vue的双向绑定是通过数据劫持来实现的,而数据劫持的核心方法则是javascript语法中的Object.defineProperty()来实现的。

Object.defineProperty()方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。

defineProperty的语法为:

Object.defineProper……

阅读更多

sprite框架之js模块化(三)

最近真是好偷懒!
距离写出上一篇文章已经隔了快一个月了,真是懒癌晚期患者。

因为下周二在公司里我有一个移动web应用的开发经验分享,向其他业务线介绍我们部门最近关于开发移动应用的经验,所以要在这周把ppt给写出来。

我打算趁这个机会先把sprite框架的系列博文写完,然后再从博文里面提炼出ppt里需要的文字,这样就一举两得啦。

之前关于sprite已经写了两篇文章,分别是sprite的由来和sprite单页的实现原理。

今天就来讲讲sprite框架中关于js模块化的实现。

模块化

先来简单的谈谈我对于模块化的理解。

虽然模块化是一个非常普通和基础的概念,但我觉得这其实是程……

阅读更多

python 如何遍历二维平面中指定点的对角线上的点

解决思路

上一篇文章描写的八皇后问题中,一个难点就在于如何判断棋盘上指定位置的对角线上是否已经有皇后棋子。

这个问题的实质是如何在一个有限二维平面(8*8)上遍历一个指定坐标点(x,y)的对角线上的所有点。

注:平面的坐标系,y轴横向右侧延伸(→),x轴在y轴下侧竖向下延伸(↓)

一个点的对角线有四个方向,分别是左上、右上、左下、右下

如果用坐标的变化趋势来表示这四个方向的话,这个问题就显得一目了然了:

  1. 左上:x轴坐标与y轴坐标相对于点(x,y)都在递减
  2. 右上:x轴坐标在递减,y轴坐标在递增
  3. 左下:x轴坐标在递增,y轴坐标在递减
  4. 右下:x轴坐标与y轴坐标相对于点(x,y)都在递增……

阅读更多

python 八皇后问题的解法(深度搜索)

共本文介绍如何用深度搜索的方式求解8皇后(其实也可以求解N皇后)问题的解

八皇后问题描述

在国际想起的规则中,皇后能攻击八个方向上的棋子,而且不受距离限制。

皇后的攻击方向如下图所示:

八皇后问题则是在这样的规则上,求在一个8*8的棋盘上,如何放置8个互相不会攻击的皇后。

比如下图这样放置:

8个皇后,每个都不在其他皇后的上下左右以及斜向的方向上,所以互相不能攻击。

ps:我写的这份代码其实也可以求N皇后问题的解,只需修改MAXNUM为指定N值即可

代码原理

从棋盘的第一行开始,从左到右的查看每一列,当检测到当前点可以放置皇后,则将该点置为1。

然后查找下一行可……

阅读更多