Aries Man

Personal Center


  • 首页

  • 归档

angular1入门

发表于 2018-12-01

一些废话

现在前段行业新技术层出不穷,而很多人都将新技术作为自己求职的敲门砖,比如现在比较流行的框架angular,vue,react;但是他们往往容易忽略最基础的html,css,js;可能你会说那些都简单,但是那些东西是易学不易精。所以只要你基础好,有逻辑思维能力,一切框架都只是工具,你不会只是因为没接触,框架不是难为人的,只是提高你的工作效率。

但是有时间还是要接触一下,因为没有不好的框架,只有不适合的。

基本指令

  • ng-app 定义应用程序的根元素,简单来说可以理解为angular的作用域
  • ng-bind 绑定数据到元素上,虽然这样的形式也可以,但是如果网速不好的话,它会直接在页面中原样输出,但是ng-bind不会。
  • ng-class 动态修改类名
  • ng-controller 定义控制器对象
  • ng-disabled 定义一个元素是否禁用
  • ng-click 绑定点击事件
  • ng-init 初始化一个变量,类似‘var’
  • ng-if 如果后边的表达式为真dom元素才存在

类似的还有很多,不一一列举

angular的特点mvvm,双向数据绑定,依赖注入;而这两点都离不开$scope,$scope是连接视图层与数据模型层面的纽带,打个比方 在数据模型层面给$scope绑定一个属性,然后你就可以在html页面里的对应控制器下取到它的属性或方法。 而react是通过操作虚拟dom来工作,它分为三个阶段,插入真是,渲染,移出真实。 所以angular对dom元素的操作比较多,每次渲染都会调用$watch,而随着代码量的壮大,执行速度会越来越慢。 个人感觉angular就是适用一些频繁表单验证、数据增加、删除、更新的场合


react-native

发表于 2018-01-21

生成RN项目

  • cnpm install react-native-cli//安装RN脚手架
  • react-native init rn//生成RN项目

启动项目

  • 项目导入AS
  • 启动夜神模拟器
  • AS中启动项目,选择模拟器为夜神,进入后会有红屏报错出现
  • node 输入 ipconfig得到当前IP
  • node 输入 react-native start
  • 夜神模拟器点击摇晃手机,然后Dev Setting>Debug Server host & port for device输入IP:8081确定,返回上一页
  • 摇晃模拟器reload可进入欢迎页面(如果白屏可重启模拟器)

安装图标库react-native-vector-icons

  • react-native install react-native-vector-icons
  • react-native link

n阶联动

发表于 2017-08-14

应用情境

类似淘宝收货地址,不过略有改动,左边70%选中并返回,右边30%选中下钻,如果没有下一级选中并返回

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
/**
* Created by gy on 2017/7/7 10:28.
*/
var pageInfo,data;
$(function () {
pageInfo=window.location.search.split('=')[1]+'.html';
// localStorage.villageCode='';
// localStorage.villageName='';
start();
});
function start() {
loadingDiv();
loadingopen();
comGetVillageGroupLst();//得到组织结构
bindClickEvent();//绑定点击事件
}

function bindClickEvent() {
$(document).on('click',function (event) {
var target=event.target;
if($(target).hasClass('left')){
var name=$(target).html();
var code=$(target).parent('li').attr('code');
localStorage.villageCode=JSON.stringify(code);
villageNameArr=[];
getVillageStructure(name);
}
else if($(target).hasClass('right')){
var name=$(target).siblings('.left').html();
var code=$(target).parent('li').attr('code');
getAddress(name,code);
}
})
}
var villageArr=[];
var villageNameArr=[];
var villageCodeArr=[];
function getDataStructure(data) {
$.each(data,function (i,v) {
var obj={};
obj[v.name]=v.subDepartment;
villageArr.push(obj);
if(v.subDepartment.length!=0){
getDataStructure(v.subDepartment)
}
});
}
function groupListLinkAge(name) {
var villageAddress='';
villageArr.forEach(function (v,i) {
if(v[name]&&v[name].length!=0){
$('.templateContent ul').html('');
$.gy.renderTemplateByData('#structureTemplate',v[name],'.templateContent ul');
}
else if(v[name]&&v[name].length==0){
villageNameArr.forEach(function (v1,i1) {
if(i1==0){
villageAddress+=v1;
}
else{
villageAddress+=','+v1;
}
})
console.log(villageCodeArr)
localStorage.villageAddress=JSON.stringify(villageAddress);
localStorage.villageCode=JSON.stringify(villageCodeArr[villageCodeArr.length-1]);
// location.href=pageInfo;
}

})
}
function returnToTheUpperLevel() {
var villageName=$('.templateContent ul li:first-of-type .left').html();
var level1Name,rootElement;
villageArr.forEach(function (v,i) {
for(var value in v){
if(v[value].length!=0){
v[value].forEach(function (v1,i1) {
if(v1.name==villageName){
for(var x in v){
level1Name=x;
}
}
})
}
}
})
villageArr.forEach(function (v,i) {
if(v&&v.length!=0){
for(var value in v){

if(v[value].length!=0){
v[value].forEach(function (v1,i1) {
if(v1.name==level1Name){
rootElement=v;
}
})
}
}
}

});
for(var x in rootElement){
var result=rootElement[x];
}
if(result){
villageNameArr.pop();
villageCodeArr.pop();
$('.templateContent ul').html('');
$.gy.renderTemplateByData('#structureTemplate',result,'.templateContent ul');
}
else{
window.location.href=pageInfo;
localStorage.villageAddress='';
}

}
function getAddress(name,code){
villageNameArr.push(name);
villageCodeArr.push(code);
groupListLinkAge(name);
}
function getVillageStructure(sonVillageName){
villageNameArr.push(sonVillageName);
var villageName=sonVillageName;
var level1Name;
var villageAddress="";
villageArr.forEach(function (v,i) {
for(var value in v){
if(v[value].length!=0){
v[value].forEach(function (v1,i1) {
if(v1.name==villageName){
for(var x in v){
level1Name=x;
}
}
})
}
}
})
if(level1Name){
getVillageStructure(level1Name);
}
else{
villageNameArr.reverse();
villageNameArr.forEach(function (v1,i1) {
if(i1==0){
villageAddress+=v1;
}
else{
villageAddress+=','+v1;
}
})
localStorage.villageAddress=JSON.stringify(villageAddress);
window.location.href=pageInfo;
}

}

php_base

发表于 2017-07-23

apache ssi_modul 开启

server side include,即服务器文件包含,.shtml格式的文件可以使用如下代码引入

1
2
<!--#include file="comm.shtml"-->     //引用绝对路径的文件
<!--#include virtual="comm.shtml"--> //引用相对路径的文件
  • 打开apache httpd.conf文件,搜索mod_include将那一行注释放开
  • 全局搜索text/html,将搜索到的这行与下一行注释放开
  • 重启apache,就可以使用include语法载入文件

php public provite protect区别

  • public表示公有的,类的内部、外部、子类都可以调用
  • private表示私有的,只有类的内部可以调用
  • protected表示受保护的,表示只有类的内部、子类、父类可以调用

isset empty区别

isset();变量是否设置empty();变量是否为空,区别在于当变量设置为0,empty(),会返回false,而isset()只要设置就会返回true,所以谨慎使用

跨域请求头设置

header(‘Content-Type: application/json’); header(‘Access-Control-Allow-Origin: *’)

json格式数据转换

1
2
3
json_encode()//转换为json格式数据,如果包含汉字,会转化为unicode码
json_decode(jsonStr,true)//将json格式数据转化为php变量,如果第二个参数为true,会将对象拆解为数组形式
//类似于js中的JSON.parse与JSON.stringfy

php报错级别设置

通过修改php.ini文件使notice级别不报错

1
2
error_reporting = E_ALL               //开始是这样的
error_reporting = E_ALL & -E_NOTICE //修改后

session销毁步骤

1
2
3
4
5
6
session_start();
$_SESSION = array();
if(isset($_COOKIE[session_name()])){
setcookie(session_name,'',time()-3600,'/');
};
session_destroy();

多表联合查询

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
public function get_goods($where='',$type=2) {
$sql = 'select
a.*,
b.iniqty,
b.iniunitCost,
b.iniamount,
b.totalqty,
c.url
from '.GOODS.' as a
left join
(select
invId,
sum(qty) as totalqty,
sum(case when billType="INI" then qty else 0 end) as iniqty,
sum(case when billType="INI" then price else 0 end) as iniunitCost,
sum(case when billType="INI" then amount else 0 end) as iniamount
from '.INVOICE_INFO.'
where (isDelete=0)
group by invId) as b
on a.id=b.invId
left join(select invId,url
from '.GOODS_IMG.' where (isDelete = 0)) as c
on a.id=c.invId
where
(a.isDelete=0) '.$where;
return $this->mysql_model->query(GOODS,$sql,$type);
}

过滤用户输入,防止sql注入

1
2
3
4
5
6
7
8
function str_enhtml($str) {
if (!is_array($str)) return addslashes(htmlspecialchars(trim($str)));
foreach ($str as $key=>$val) {
$str[$key] = str_enhtml($val);
}
return $str;
}
具体用法为:$result = str_enhtml($this->input->post('username'));

csv文件导入数据库时记得用txt另存改格式

mysql优化小细节

1
2
$sql = "select * from tbmessage_manager where _id = (select max(_id) from tbmessage_manager)";//优化前
$sql = "select * from tbmessage_manager order by _id desc limit 0,1";//优化后
12

何足道

14 日志
5 标签
© 2019 何足道
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4