Hank's Blog

耕种思考的自留地

0%

前端工作有很多地方需要页面跳转,有很多种实现方法。

HTML标签

一般形式上可以用<a></a><button></button><input/>

1
2
3
<a href="链接">GO</a>
<button onclick="window.location.href='链接'">GO</button>
<input type="button" value="GO" onclick="location.href='链接'">

JS跳转页面代码

本页跳转

1
2
3
4
5
window.location.href = '链接';
window.location = '链接';
location.href = '链接';
location = '链接';
top.location = '链接';
Read more »

Sublime Text3 是一款很好用的编辑器,想要优雅地使用它,知道部分快捷键和插件是必须的。

常用快捷键

快捷键 描述
control + - 回到上一个光标
control + shift + - 回到下一个光标
control + cdm + ↑/↓ 移动当前行代码
control + option + t 交换选中的两部分代码
cmd + option + [ 折叠选中的代码
cmd + option + ] 展开选中的代码
shift + cmd + p 打开命令面板
control + ` 打开控制台
cmd + n 新建标签
cmd + 1/2/3… 标签切换
cmd + option + 2 分成两屏
cmd + delelte 删除本行光标前的所有字符
cmd + shift + ↑/↓ 选中光标上下代码
cmd + f 查找
option + cmd + f 查找替换
cmd + t 跳转到指定文件
control + g 跳转到指定行
cmd + r 跳转到指定函数
cmd + l 选中当前行
cmd + / 注释当前行或注释选中代码
cmd + option + / 产生注释代码或注释选中代码
cmd + k + b 开关侧边栏
Read more »

  • 单引号内字段不进行解释,直接输出。
  • 双引号内字段会经过编译器解释,然后再当作HTML代码输出。

双引号内部变量会解析,单引号则不解析。

1
2
3
4
$abc = 'my name is Tom';
echo $abc; //结果是:my name is Tom
echo '$abc'; //结果是:$abc
echo "$abc"; //结果是:my name is Tom

建议 PHP 引号使用原则:

  1. 纯字符串最外层用单引号。
  2. 包含变量时最外层用双引号。
  3. 包含特殊符号(如换行符\n)时最外层用双引号。

面向对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php 
class Site {
/* 成员变量 */
var $url;
var $title;

/* 成员函数 */
function setUrl($par){
$this->url = $par;
}

function getUrl(){
echo $this->url;
}

function setTitle($par){
$this->title = $par;
}

function getTitle(){
echo $this->title;
}
}

$google = new Site;

// 调用成员函数,设置标题和URL
$google->setTitle( "Google 搜索" );
$google->setUrl( 'www.google.com' );

// 调用成员函数,获取标题和URL
$google->getTitle();
$google->getUrl();
?>
Read more »

命名空间

PHP 命名空间(namespace)是在PHP 5.3中加入的,可以解决以下两类问题:

  • 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
  • 为很长的标识符名称创建一个别名(或简短)的名称,提高源代码的可读性。

定义命名空间

默认情况下,所有常量、类和函数名都放在全局空间下,就和PHP支持命名空间之前一样。
命名空间通过关键字namespace 来声明。可以在同一个文件中定义不同的命名空间代码。
如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间。在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句。所有非 PHP 代码包括** 空白符 **都不能出现在命名空间的声明之前。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
declare(encoding='UTF-8'); //定义多个命名空间和不包含在命名空间中的代码
namespace MyProject {
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
}

namespace { // 全局代码
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
?>
Read more »

对于用 Mac 的小伙伴来说,这是一个非常实用的技能,我花了些时间研究了下,现在写下我的心得。
网上一查,主要有两种方法,首先请打开你的终端。

通过Find命令搜索文件

find命令来自unix,OS X 和 Linux 系统同样支持该命令。find最基本的语法是:

1
find 文件路径 选项 目标文件

比如你可以通过以下命令全局搜索名字是 php.ini 的文件:

1
find / -name  "php.ini"

也可以在指定的文件夹中查找以 php 开头的文件:

1
find ~/Library/ -name "php*"

通过mdfind命令搜索文件

mdfind命令就是Spotlight功能的终端界面,mdfind命令非常迅速。最基本的使用方法是:

1
mdfind -name 文件名 

和find一样请务必加上 -name 选项,不加就会搜出一大堆文件。

亲自试了一下这两个方法,速度上 mdfind 快 find 几条街,所以强烈推荐使用 mdfind 。但是使用mdfind -name 文件名和你用Spotlight终端一样是无法搜索被隐藏的文件的。如果你需要搜索隐藏文件,请在终端输入sudo mdfind -name 文件名

PHP(全称:Hypertext Preprocessor,即:超文本预处理器”)是一种在服务器上执行的通用开源脚本语言。作为一位 PHP 初学者,决定将一些知识点记录下来。

变量

变量

变量以 $ 符号开始,后面跟着变量的名称。
变量名必须以字母或者下划线字符开始,只能包含字母数字字符以及下划线。
PHP变量名和语句一样都是区分大小写的。
PHP 有四种不同的变量作用域:local、global、static、parameter。
global 关键字用于在函数内部访问全局变量。

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$x=5;
$y=10;

function myTest()
{
global $x,$y;
$y=$x+$y;
}

myTest();
echo $y; // 输出 15
?>
Read more »

replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子字符串。
语法 string.replace(searchvalue,newvalue)

参数 描述
searchvalue 必须。规定子字符串或要替换的模式的 RegExp 对象。
newvalue 必须。规定了替换文本或生成替换文本的函数。

简单实例

执行一个全局替换, 忽略大小写:

1
2
3
var str="Mr Blue has a blue house and a blue car";
var n=str.replace(/blue/gi, "red");
console.log(n) // Mr red has a red house and a red car
Read more »

RegExp 对象属性

属性 描述
global RegExp 对象是否具有标志 g
ignoreCase RegExp 对象是否具有标志 i
multiline RegExp 对象是否具有标志 m
source 正则表达式的源文本
lastIndex 一个整数,标示开始下一次匹配的字符位置

lastIndex 语法 RegExpObject.lastIndex
该属性存放一个整数,它声明的是上一次匹配文本之后的第一个字符的位置,该属性是可读写。
注意:不具有标志 g 和不表示全局模式的 RegExp 对象不能使用 lastIndex 属性。如果在成功地匹配了某个字符串之后就开始检索另一个新的字符串,需要手动地把这个属性设置为 0。

Read more »

RegExp 对象

RegExp(regular expression) 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。

创建 RegExp 对象

1
2
var reg = new RegExp(pattern,modifiers);
var reg = /pattern/modifiers;
  • pattern(模式) 描述了表达式的模式
  • modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配
1
2
3
/* 注意一个是引号包裹,一个是斜杠包裹,特殊字符需要转义 */
var reg = RegExp("^qq\.com$")
var reg = / ^qq\.com$ /

修饰符

修饰符 描述
i 执行对大小写不敏感的匹配
g 执行全局匹配
m 执行多行匹配

方括号

方括号用于查找某个范围内的字符:

表达式 描述
[mhg] 查找方括号之间的任何字符
[^mhg] 查找任何不在方括号之间的字符
[a-z] 查找任何从小写 a 到小写 z 的字符
(mh|g|abc) 查找任何指定的选项
1
2
3
4
5
var str = "Is this all there is?";
var patt1 = /[a-h]/g;
console.log(str.match(patt1)); // h,a,h,e,e
var patt2 = /(Is|is)/g;
console.log(str.match(patt2)); // Is,is,is

元字符

元字符(Metacharacter)是拥有特殊含义的字符(以下省略部分生僻元字符):

元字符 描述
. 所有单个字符,除了换行和行结束符
\w 单词字符
\W 非单词字符
\d 数字字符
\D 非数字字符
\s 空白字符
\S 非空白字符
\b 单词边界
\B 非单词边界
\n 换行符
\r 回车符(与换行符的区别请戳这里)
\xxx 以八进制数 xxx 规定的字符
\xdd 以十六进制数 dd 规定的字符
\uxxxx 以十六进制数 xxxx 规定的 Unicode 字符

量词

量词 描述
n+ >=1(至少一个)
n* >=0(任意个)
n? <=1(至多一个)
n{X} X个n
n{X,Y} X至Y个n
n{X,} 至少X个n
n{0,X} 至多X个n
n$ 结尾为 n 的字符串
^n 开头为 n 的字符串
?=n 其后紧接 n 的字符串
?!n 其后没有紧接 n 的字符串