JSON数据类型的学习

  1. 1. — 2013-10-05 更新—-

初学AJAX,今天写一个表单验证,发现$.ajax()的success回调函数总是不会执行,而error毁掉函数则总是执行。

我是先POST表单账号密码给php文件,该php文件返回数据(我直接返回了常量供自己测试),然后在JS里获得data.login_email。

发现data.login_email得到的总是undefined,为什么呢?由于对JSON格式不是很熟悉,所以不断调试不断查资料,最后发现:

原来自1.4版本的jQuery开始,JSON写的不规范可能导致错误!

“json”: Evaluates the response as JSON and returns a JavaScript object. In jQuery 1.4 the JSON data is parsed in a strict manner; any malformed JSON is rejected and a parse error is thrown. (See json.org for more information on proper JSON formatting.

查资料学习了JSON格式后,修改后台php代码为:

[php]

<?php

header(‘Content-type: text/json’);

$results = array (

&quot;login_email&quot; =&gt; &quot;0&quot;,

&quot;login_password&quot; =&gt;&quot; 0&quot;

);

echo json_encode($results);

?>

[/php]

再修改前台代码则为:

[javascript]

$(‘#login-btn’).click(function(){

var emailVal = $(‘#login-email’).val();

var passwordVal = $(‘#login-password’).val();

//点击登陆按钮时进行验证

$.ajax({

type: "POST",

data:{"emailVal":emailVal,"passwordVal":passwordVal},

dataType: "JSON",//原来声明了json数据类型就必须严格书写JSON!

url: "login_check.php",

success: function(data){

if(data.login_email==0){//邮箱错误

$(‘#login #login-email’).prev().show();

$(‘#login #login-email’).parent().parent().addClass(‘warning’);

}

            if(data.login_password==0){//密码错误

                $('#login #login-password').prev().show();

$(‘#login #login-password’).parent().parent().addClass(‘error’);

}

},error:function(XMLResponse){

        alert(&quot;出错!错误信息为&quot;+XMLResponse.responseText)}

        });

return false;//禁止登陆按钮的默认行为

});//click()结束

[/javascript]

总结出一点JSON规范为:

  1)名称:用双引号引起,如[javascript]

data:{&quot;emailVal&quot;:emailVal,&quot;passwordVal&quot;:passwordVal}

[/javascript]

  2)字符串:用用双引号引起,如下:

[php]

<?php

header(‘Content-type: text/json’);

$results=array("a" => "apple", "b" => "banana", "o" => "orange");

echo json_encode($results);

?>

[/php]

3)boolean类型不加引号,其他都要加(包括数字)

4)前后台使用的数据类型应该一致,如后台使用json_encode($results);前台使用dataType:JSON;来声明

5)若定义了dataType为JSON就必须使用严格语法的JSON,否则success回调函数就不执行!

— 2013-10-05 更新—-

注意JSON字符串与JSON对象的区分:

[javascript]
// 这是JSON字符串
var foo = ‘{ "prop": "val" }’;
// 这是对象字面量
var bar = { "prop": "val" };
[/javascript]

JSON有非常严格的语法,在string上下文里{ “prop”: “val” } 是个合法的JSON,但{ prop: “val” }和{ ‘prop’: ‘val’ }确实不合法的。所有属性名称和它的值都必须用双引号引住,不能使用单引号。另外,即便你用了转义以后的单引号也是不合法的。
参考:根本没有”JSON”对象这回事

2013-03-jquery.ajax()表单验证练习

今天学习了Json数据格式,并用$.ajax()发送表单:点击按钮发送数据到后台php文件,后台处理后返回Json,再用jquery读取Json数据

成功发送数据到后台,我模拟了后台返回的数据(笨方法:直接赋值回来):点击注册或登录按钮,就会检测表单。

PS:这个页面没有真正的表单验证,不管输入什么都会显示出错误提示,因为我只是模拟后台,处理结果都是表单输入错误。

核心代码:

1.php封装json数据,返回到前台:

2.$.ajax()处理返回的json数据,控制表单的行为:

最终效果,见Demo

2013-03-CSS和JQuery下拉菜单练习

手生,光看书不动手去写代码,就不会发现细节问题,要不断地练习,熟能生巧!

CSS和JQ分别实现下拉菜单,核心代码只有几行。

[css]

/CSS下拉菜单/
nav#css-menu>ul>li:hover ul{
display: block;/鼠标悬浮时显示下拉菜单/
}

[/css]
[javascript]

/jQuery下拉菜单/
$(document).ready(function(){
$(‘#jquery-menu>ul>li’).hover(function(){
$(this).find(‘ul’).slideDown(‘slow’);
},function(){
$(this).find(‘ul’).slideUp(‘fast’);
});
});

[/javascript]

Demo

CSS碎片积累

  1. 1. mydiv1 {margin-top:-10px;}
  2. 2. mydiv1 {
  3. 3. show-href:hover:after {
  • / em的理解 /
    em是相对于父元素来计算大小的,浏览器默认为16px,设置body为0.75em(160.75=12px)后,若设置再body里的div为1em,则div里的文字大小实则为12px。
    PS:若设置ol为font-size:0.6em;则嵌套的ol为60%
    60%=36%的大小,列表嵌套会出问题。原则上用em定义字体时,嵌套不超过两层。
  • / 文字底部对齐 /
    设置文本在div里底部对齐用vertical-align:bottom;是不够的,还需设置display:table-cell;才会有效果。
  • / 内容居中文字不居中 /
    设置div绝对定位在网页中间position:absolute;后设置margin:0 auto;即可。设置内容居中但文字不跟着居中,另加text-align:left;即可。
  • / 行高建议用相对单位 /
    设置行高时建议使用百分比%或者em为单位。
  • / 浏览器默认行高 /
    浏览器默认行高为1.2em,建议设置为1.6~1.8em。
    -/ 上下边距的合并 /
    在CSS中,上下的margin都设置时,取大的margin值合并,而不是简单的叠加。
    -
    不能简单地用line-height来替代margin的值,因为不同浏览器的解析不一样。
  • / 图片替代文字 /
    图片代替文字时设置text-indent:-999px;要加overflow:hidden;
    最佳实践是Kellum法:
    [css]
    .hide-text {
    text-indent: 100%;
    white-space: nowrap;
    overflow: hidden;
    }
    [/css]
  • / 隐藏元素的方法 /
    visibility:hidden;元素不可见,但占据原来位置;display:none;元素不可见,不占据原来位置。
    -
    图像作为链接时默认会有蓝色边框,与 a 的默认样式一致

  • / 元素居中的方法 /
    方法一:设置width和margin;
    方法二:子元素inline-block父元素text-align设置为center;
    方法三:
    div设置为float:left;position:relative;
    div下的ul设置为float:right;position:relative;left: 50%;/整个分页向右边移动宽度的50%/
    ul下的li设置为float:left;position:relative;right:50%;
    原理分析
    方法四:绝对定位,原理类似方法三
    div设置为relative;
    ul设置为absolute,left:50%;
    li设置为relative,float,right:50%;
    方法五:CSS3的flex实现水平居中方法
    方法六CSS3的fit-content实现水平居中方法

  • / 图片宽度自适应容器的宽度 /
    1. 从固定宽度改为流式宽度,面临的一个主要问题是图片的显示尺寸。而这个问题在css中有个简单的解决方法,就是只需要设置图片的宽度是100%。
    2. 制作自适应大小的图片,即背景图片总是占满容器:给div设置固定的高度并设置背景图片为居中:
    [css]
    div.auto_image{
    height: 200px;
    margin: 0 auto;
    background: url(auto_image.jpg) no-repeat center;
    }
    [/css]

  • / 高亮用id定位的元素 /
    用#id定位页面内的元素时,稍稍高亮背景颜色提升体验:
    [css]
    div:target{
    background:#333;
    }
    [/css]

  • / outline替代border做测试 /
    之前尝试在鼠标hover一个图像时突出当前图像使用的是border,但总是会影响到周边元素,应该使用outline:不占据空间!outline的属性跟border一样:outline:1px solid #eee;

  • / 消除relative图片偏移后的空白/
    经常将一个图片使用relative定位,有了一定的位移后原位置空白,可设置负边距让文字填充进来。
  • / 关系选择器 + 的妙用 /

使用相邻选择符时常用h3 + p 来h3后的第一个p,别忘了h3 + p + p选择第二个p,以此类推

  • / inline-block /
    inline-block会激发IE的haslayout,且注意inline-block元素间若有空格,会有影响
  • / z-index的理解 /
    z-index只对定位元素起作用。如果你尝试对非定位元素设定一个z-index值,那么肯定不起作用。
  • / CSS3动画 /
    CSS3 是个独立于 JS 的线程,这个特点目前已经在 Desktop Safari / IOS Safari / Android Chrome 中被支持,所以说,移动 webapp 中的动画应用,尽可能使用 CSS3 吧
  • / 负边距的妙用 /
    当static元素的margin-top/margin-left被赋予负值时,元素将被拉进指定的方向。例如:
    / 元素向上移10px/

    mydiv1 {margin-top:-10px;}

    但如果你设置margin-bottom/right为负数,元素并不会如你所想的那样向下/右移动,而是将后续的元素拖拉进来,覆盖本来的元素。
    [css]

    mydiv1 {

    margin-bottom:-10px; / #mydiv1后续元素向上移10px, #mydiv1 本身不移动 /
    }[/css]
  • / box-sizing的使用 /
    处理盒模型时,让width包括padding和border的宽度:
    [css]
  • {/所有元素/
    box-sizing: border-box;/别忘了加浏览器前缀/
    }[/css]
  • / 简易浮动 /
    [css]

.clearfix{
overflow: auto;
zoom: 1;/兼容IE6/
}

[/css]

//lxl:最佳实践

[css]
/ 现代浏览器 /
.cf:before,
.cf:after {
content: "";
display: table;
}

.cf:after {
clear: both;
}

/ IE6/7 触发hasLayout /
.cf {
*zoom: 1;
}
[/css]

  • / 媒介查询 /

[css]

@media screen and (min-width:600px) {
nav { float: left; width: 25%;}
}
@media screen and (max-width:599px) {
nav li { display: inline;}
}


[/css]

  • / 视窗宽度的理解 /
    指定视窗宽就仿佛告诉了浏览器你的网页在这个宽度下显示是最合适的。要是做了一个专门在iPhone上浏览的网页,那么你就设置视窗宽为320px.
    但是这不易于 响应式设计,因为在平板上浏览它的时候,它会被缩小到320px的区域中。在响应式设计中最好指定视窗宽和设备的屏宽一致。
    [html]
    <meta name="viewport" content="width=320">
    [/html]

/ 视窗缩放 /
在移动端,屏幕上开合手指可以控制缩放,但当你设定视窗宽和设备宽度一致时,就没必要去放大浏览整个网页了。为了确保网页的初始显示不是放大过的,可以用initial-scale属性来设置初值。若用户在浏览过程中不需要缩放,你可以设置它为1。
[html]
<meta name="viewport" content="width=device-width">
[/html]

甚至是如果你连用户的滚屏操作都想禁止,你可以设置maximum-scale为1,这样就完全不能放大了。
[html]
<meta name="viewport" content="maximum-scale=1">
[/html]

-/ HTML4与HTML5文档头的理解 /
HTML 4.01 中的 doctype 需要引用一个 DTD,这是因为 HTML 4.01 基于 SGML。HTML 5 不基于 SGML,也不需要引用 DTD,但是需要声明文档类型让浏览器按照它们应该的方式来运行。
-/ 表单值设为disabled将不会被发送 /
如果一个元素被设置成 disabled, 那么它的值就不会被发送的server端。 正确的做法应该是使用 readonly。
禁用(disabled):value 不会在 Form 提交时发送出去。这个对于按钮来说用处比较大,一般的 type=”text” 最好是隐藏,而不是禁用,因为它不需要发送数据。
只读(readonly):value 会在 Form 提交时被发送出去。所以需要在外观上显示跟一般 input/textarea 一样,但不允许用户修改数据,可以用这个属性。
隐藏(hidden):这个比较好理解,value 会被发送,并且用户看不到。

  • / :after和:before的妙用 /
    配合 :after 或者 :before 在CSS中可以用attr()显示HTML属性值
    [css]
    @media print {
    a:after {
    content: " (link to " attr(href) ") ";
    }
    [/css]
    [html]
    <a href="http://example.com">Visit our home page</a>
    [/html]

-/ css的函数方法 /
使用counter()在列表中自动添加序号
[css]
body {
counter-reset: heading;
}
h4:before {
counter-increment: heading;
content: "Heading #" counter(heading) ".";
}
[/css]

/ 使用calc()做算术 /
[css]
.parent {
width: 100%;
border: solid black 1px;
position: relative;
}
.child {
position: absolute;
left: 100px;
width: calc(90% - 100px);
background-color: #ff8;
text-align: center;
}
[/css]

  • / 关闭自动补全 /
    关闭浏览器自动补全不是autocomplete=”false” 而是autocomplete=”off”,可防止自动补全插件与其的冲突
    -
    对em和ex的正确理解:em 是当前字体下 M 的宽度,而 ex 是当前自提下 x 的高度
  • /边距值单位的妙用/
    外边距单位的采用,margin-left和margin-right采用px而margin-top和margin-bottom采用em,能保证缩放时边距的自适应:
    [css]
    p {font-size: 1em; margin: .75em 30px;} / 缩放时边距自适应 /

[/css]

  • / 盒子模型的理解 /
    盒子模型结论1:没有设定元素的宽度即width:auto;时,content、padding、margin、border的总宽度占满父元素宽度;
    盒子模型结论2:有设定元素的宽度即width:400px;时,padding、margin、border的总宽度在原设定的宽度上增加;
    即:盒子的width设定的只是盒子content区的宽度,而非盒子要占据的水平宽度
    盒子模型结论对于布局的用法:
    假定是三列等宽布局,nav、article、adise都是浮动且宽度设定后,若为其中任何一个添加padding、margin,则会让总宽度超出,解决方法是:
    为每一个浮动的元素增加一个内部div.inner,给内部的div.inner设定padding、margin,这么以来,内部div的总宽度总是等于父元素最初设定的宽度了。
    缺点是,这么一来,得跟极度赞成标签语义化的同行们有一番争吵了。
    除此之外,可使用CSS3的box-sizing属性,设置width的计算方式:box-sizing : content-box || border-box || inherit
    content-box:Element Width/Height = border+padding+content width/height
    border-box:Element Width/Height = 0 + 0 +content width/height
    注:IE6/IE7不支持box-sizing,可使用一个polyfill(腻子脚本)borderBoxModel.js来兼容
    建议使用:* {box-sizing: border-box} // 权衡利弊?
  • / 防止元素长度撑破容器 /
    防止未来出现过大的元素(特别是在动态网站中,一些过长的url都可能撑破容器)的一种思路:
    给子元素 img {max-width: 100%};
    或父元素:
    overflow: hidden; / 截断超出的元素(而非缩放)/
    word-wrap: break-word; / 让一些长的字符串如url换行显示 /
    -/ 三栏布局的方法 /
    三栏布局-中栏流动布局的思路:中栏改变大小时右栏使用负外边距
    [html]

<div id="threecolwrap" style="width:100%; float:left;">
<div id="twocolwrap" style="margin-right:-210px;float:left;width:100%;">
<nav style="float:left;width:150px;">固定宽度</nav>
<article tyle="margin-right:210px;width:auto;">给自身margi-right:210px;并给父元素margin-right:-210px</article>
</div>
<aside id="onecolwrap" width:210px;float:left;>固定宽度为外边距210px</aside>
</div>

[/html[/html]

-
/ 一个更简单巧妙的办法实现三栏布局(推荐)/
给三个栏都设定display:table-cell让他们具有表格的属性就行了:(缺点是IE7以下的不兼容,且没有polyfill脚本,觉悟吧!)
[html]
<nav style="display:table-cell;width:150px;">固定宽度</nav>
<article style="display:table-cell;width:auto;">宽度自适应</article>
<aside style="display:table-cell;width:210px;">固定宽度</aside>
[/html]

-
清除浮动的几种方法
方法一:父元素overflow:hidden; //不能在下拉菜单中使用
方法二:父元素也浮动,父元素下的元素clear:both; // 不能对靠外边距居中的元素使用
方法三:父元素内最后放一个清楚浮动的元素div.clearFloat
方法四:父元素.clearfix添加伪类模拟方法三(推荐使用,见上文)

  • / 背景图片定位不同单位下的理解 /
    使用关键字和百分比的情况下,理解background-position:33% 33%;时,是背景图片的33%处与元素的33%处重叠!
    使用像素的绝对数值的情况下,理解background-position:33px 33px;时,图片左上角被放在(33px,33px)的地方!
  • / 添加水印的方法 /
    background-attachment: fixed;常用给body中间添加水印(默认值是scroll)
  • / font-family常见字体系列 /
    font-family字体栈中最后一个通常是字体类的名字,能保证最坏情况下文档能以正确的字体显示。常用的字体类有:
    font-family: serif; // 衬线字体
    font-family: sans-serif; // 无衬线字体
    font-family: monospace; // 等宽字体
    font-family: cursive; // 草书体或手写体
    font-family: fanstasy; // 一般是奇怪的字体
  • / font-xxx属性的理解 /
    font-weight中只有bold和normal才得到了浏览器的广泛支持,建议只使用这两个属性
    font-varient中只有normal和small-caps(小型大写字母)
    font的简写注意顺序和格式:
    font: italic small-caps bold 12px/1.5em arial,verdana;
    即顺序为:
    font : font-style || font-variant || font-weight || font-size || line-height || font-family
    默认值为:normal normal normal medium normal “Times New Roman” 。
    font-size和font-family是必写项,font-size和line-height只能通过斜杠/组成一个值,不能分开写,且应该在font-family前。
  • / text-indet缩进是继承的 /
    text-indent原来是有继承的,且是计算得出的结果父元素400px * 5% = 20px,则子元素默认缩进20px !
    -
    保持id和class最少却又能准确定位元素:正确的方法是设定一个id,以该id为hook(路标),选择它的子元素进行定位,同时提高HTML和CSS代码的易读性!// lxl:缺点是牺牲了权重
  • / 非首位子选择符 /
    ul li + li {border-top:1px solid #eee;}解决导航菜单不用给最后一个li添加类然后去掉最后一个li的下边框的问题
  • / 代码分离提高重用性 /
    在写一个功能性的代码,如下拉菜单时,建议将功能代码和视觉代码分开写,可提高重用性
  • /overflow:hidden对定位元素的影响/
    overflow:hidden 会修剪相对定位(position:relative)的元素,但并不总是会隐藏绝对定位元素。
  • / zoom触发IE的hasLayout属性 /
    zoom为ie私有css属性,一般用来触发ie的hasLayout属性,解决ie下的浮动,margin重叠等一些问题。
  • / 图片优化 /
    减少颜色数可减小PNG图片的大小
  • /禁止修改文本框大小/
    [css]
    textarea { resize: none; } / 禁用textarea的大小改变 /
    [/css]
  • / 自定义光标样式 /
    cursor: url(cursor.png), default; / 添加default才能在chrome激活cursor rule,否则不能显示/
  • / 网页点击启动QQ /
    [html]
    <a href="tencent://message/?uin=545183877&Site=JooIT.com&Menu=yes">点击启动QQ和lxl聊天!</a>
    [/html]

  • / 顶部栏和底部栏留空 /
    对footer或者header设定了position:fixed;要记得给他们腾出个地方来。对于footer就可在body中设定一个margin-bottom的值给它。
    -
    使用CSS的attr和content属性,改变title的样式:
    [html]
    <p class="tooltip" data-title="I’am data-title">Hover me!</p>
    <p class="tooltip" data-title="I’am data-title" title="I’am title">注意,使用了自定义的data-title而没有写原属性title,可防止冲突产生</p>
    [/html]

[css]
.tooltip:hover:after {
content: attr(data-title);
background: #eee;
border: 1px solid red;
position: relative;
top: -26px;
left: -40px;
}
[/css]

[css]

show-href:hover:after {

 content: attr(href);
 background: #eee;
 border: 1px solid red;

}
[/css]

  • / IE6 margin加倍的问题 /
    当box为float时,IE6中box左右的margin会加倍

2013,顾自地来了

我在想,我该怎么总结我的2012。

下午下了地铁回到学校就把柴静的书看完了,看完后就睡了一觉,起来是晚上七点半接着把《看见》新书发布会的视频看完,然后打个电话洗个澡回到被窝里,一直发呆到现在,想着:这是2012的最后一天,我到底该怎么总结我的2012。

我想用黄西的一句幽默“我在过去的十年里生活了十年”来总结我这一年:我在过去的一年里生活了一年。

这句话没有意义,对的。

 

按旧习惯,我会按着时间顺序回顾这一年,然后给自己打打鸡血喝喝心灵鸡汤,不是恶狠狠地打击自己就是美滋滋地向往下一年。

可,这真可笑。

 

一年里看的书,得到的感悟超过了过去的二十年,这是真的。

我妄想着要自由,一直在挣扎着。

“不要去争自由,要争独立。没有独立的自由,你仍是奴隶。”

这,才是对的。

 

我总想着对抗,有一副假装,有何用?

自我欺骗。

 

我这毛孩子,还需要磨练,需要继续摔跟头,断断续续站起身摇摇晃晃甩去无知无畏,才会有那么一天能真正地看见自己。

真正地看见自己的故事。

 

2012,顾自地去了,2013顾自地来了。

它不会理我,却一直在陪伴。

因为这就是时间。

 

要和它做朋友。

然后,让它来讲述故事。

 

2012-12-仿学校官网主页

仿SCUT主页,没有精细到每一个px,目的是练习布局。

其中下拉菜单用纯CSS写的,还尝试用了Sprite图片,写起来还很生疏,需要多加练习。

代码没有优化,因为赶着复习期末考试了,就先放着吧,上demo

人在囧途

笑了一场荒诞,荒诞地笑。

看完《人在囧途2》,忽的想起三年前看的《人在囧途1》。

 

三年前-那时我未满十八岁,我笑了一场荒诞。捧腹于李成功(徐铮饰演)与牛耿(王宝强饰演)一路回家的囧,我想这只不过是一出喜庆片罢了,不可能在生活上演。耿直憨厚的牛耿一只乌鸦嘴,伴随被情人逼迫回家与老婆摊牌的李成功,在回家路上上演了一场荒诞的戏。

对,2010的我认为这是荒诞的,不可能在现实上演。殊不知,我只是离现实太远。

 

三年后-此刻我弱冠之年,我荒诞地笑了。依旧捧腹于徐朗(徐峥饰演)与王宝(王宝强饰演)寻扎 Mr周 的泰囧之路,故事依旧荒诞离奇,我开始想,这不会仅仅是一出贺岁片了,很可能就在生活重演。一路曲折之后,徐朗回到原点。

对,2012的我认为这并不离奇,甚至在生活重现。

 

三年的囧途,我似乎回到了原点。

要是我能跟王宝一样有多好:去泰国看人妖,却不知道人妖原来是男的;去泰国看泰姬陵,却不知道泰姬陵在印度。可他知道,谁也不可以伤害他的家人,要给家人种上一棵健康树。

只有他,真正懂得生活,因为他不曾想太多,只是那么活。

简单地活。

不,这只是一出戏。

不,这不是一出戏。

 

圣诞贺卡-世界末日-冬至-想家

花了几天时间,代表文教制作了一个圣诞贺卡送个热心的外国友人,向他们展示我们文教一年的成果和对他们表示感谢。

对我而言,这算是一个“小项目”吧。

涉水前端时间不长,没什么经验,写这些代码都是摸着石头过河,一步一步调兼容做出来的。

Lucy给的需求,相当于客户甲方了。也就是说,这是在客户提供需求的情况下,我自行设计制作出来的一份网站(虽然只是简单的静态页面,不涉及后台交互)。

不清楚那些接受贺卡的人用什么浏览器,没敢多用H5的特性,并且对该死的低版本IE没有做很好的兼容,希望不会搞砸。

嗯,上demo, http://www.chinepro.org/christmas2012/

 

嗯,很明显,我的美感还是很欠佳,需要不断地弥补。

今天是世界末日也是冬至,给爷爷打了电话,他说家里的汤圆好吃。今晚班里组织在三个宿舍打边炉吃汤圆,我没有去。

 

树欲静而风不止,子欲养而亲不待。二老八十高龄,身体不好。

我只想着家。

呵呵,跑题了。

 

小赖的职业生涯规划书

真实姓名:XXX

昵 称:赖小赖

就读学校:SCUT

E - m a i l:545183877@qq.com

新浪微博:@赖小赖小赖

个人网站:laispace.com

引言

个人拙见:深深痛恨于形式主义,不写花俏的词汇凑字数,发自内心写此职业规划书。

第一章** **认识自我

1.**个人基本情况**

我来自广东某山区偏远农村,考上SCUT可非易事,踏入华园,深感“人才济济,我是草根”,但坚信“我不能改变世界,但能改变自己。”,从大一便开始了对自身理解的探索。

我坚持认为大学是培养学生三观的摇篮和确定职业方向的象牙塔,大学更该注重于通识教育的发展,而非沿袭应试教育的弊端,对于教导,该因材施材,此为大环境。

对我而言,我没有读研的计划,我认为我该尽早积极探索自身兴趣、主动学习完善知识体系并最终建立职业规划。以下为职业探索。

2.**职业探索**

2.1大一上

泡馆、上网阅览书籍、资讯,得知自己不适合做科学研究,无读研计划;

2.2大一下

发现对网络工程师感兴趣,自学网络知识,遇到瓶颈失去兴趣;

2.3大二上

发现对Web前端有浓厚兴趣,自行摸索相关技术,激发了热情甚至是职业向往。

3.**职业定位**

十几年的教育我接受了填鸭式学习,读小学为了读初中、读初中为了上高中、读高中为了考大学,考上大学不知做什么。所以有了前文谈到“人才济济,我是草根”的心态。

直到考上大学,拥有了充裕的时间去思考自己,拥有了自由去探索各方面的兴趣,最终我初步确定了自己的人生规划,而职业规划只能算是人生规划的子集,但囿于此文重心为职业生涯规划,还是着重谈自己对职业规划的理解罢。

3.1 坚持摄影的兴趣,因为累了倦了出去走一走拍一拍感叹感叹,对于我是一种极其有效的放松方式;

3.2 坚持打网球以及长跑,功利地说“运动是为了学习”,而对我而言这是生命不可或缺,对职业发展而言,高强度的工作亟需硬朗的身体作为本钱(接下来我会谈到我所选行业的水很深);

3.3 坚持摸索Web前端技术,在学好专业知识的前提下,提早获取该行业的资讯,根据发展趋势、工作要求来确定自己学习的方向。

也就是说,目前我的职业定位为:**Web**前端工程师。3.3中之所以说是“摸索”前端,是因为我觉得对于我这种乳臭未干的弱冠90后,深不知复杂社会与安稳校园的鸿沟,深不知在不断的尝试之后又会产生怎么的兴趣(这兴趣兴许会让自己产生新的职业定位呢?),大学毕业之前,该对自己有一份清醒的认识,但到现在为止,我还没有,所以还需要探索、尝试。



第二章** **职业生涯条件分析

1.**职业描述**

   我所说的Web前端,对大多数人而言定是陌生的,因为事实上这个职业在中国兴起的时间并没有超过五年,也就是说它的发展前景不可小觑。

   引用百度百科对Web前端工程师的描述:

   Web[前端开发工程师](http://baike.baidu.com/view/4227693.htm)是一个很新的职业,在国内乃至国际上真正开始受到重视的时间不超过5年。Web前端开发是从网页制作演变而来的,名称上有很明显的时代特征···

随着Web 2.0概念的普及和W3C组织的推广,网站重构的影响力正以惊人的速度增长。XHTML+CSS布局、DHTML和Ajax像一阵旋风,铺天盖地席卷而来,包括新浪、搜狐、网易、腾讯、淘宝等在内的各种规模的IT企业都对自己的网站进行了重构···

随着人们对用户体验的要求越来越高,前端开发的技术难度越来越大,Web前端开发工程师这一职业终于从设计和制作不分的局面中独立出来。

在技能方面,豆瓣工程师张克军前辈认为前端工程师该掌握的技能如图:

该图涉及计算机领域的专业词汇较多,我一言以蔽之:

Web**前端行业,所需掌握的技能非常之多且复杂。**

国内大公司感叹于招不到好的前端,也说明这个职业的人才缺口之大。


2.**职业兴趣**

除了前端行业具有很大的发展前景以外,更重要的是我在这个领域内发现了浓厚的兴趣。与其说职业定位,不如说是兴趣的挖掘。建立在兴趣基础上的职业,其乐无穷。

前端工程师可谓是设计师中的工程师,工程师中的设计师。从大公司渴求前端人才的情况来看,Web前端开发的水可谓是很深,但对我而言,我喜欢新奇更喜欢挑战。

3.**个人特质与职业价值观**

3.1**个人特质**

我性格外向、喜欢户外运动并自信沟通能力强,这正符合前端工程师前要与交互设计师沟通,后要和后台工程师沟通的要求,除前端技能外,沟通能力同样重要;

我喜爱互联网、对新技术有热情,这正符合前端工程师需要有极强的应变能力,快速学习新出现的技术,持续创新;

3.2 **职业价值观**

我谈不上职业价值观,因为我还没有真正涉足这个行业,没有参与一个产品的开发,但坚信的一点是:Web**前端需要程序员的严谨、设计师的眼光。**这成为我在学习过程中该注重培养的素养。

引用豆瓣资深前端工程师张克军前辈的描述:

web产品交互越来越复杂,用户使用体验和网站前端性能优化,这些都需要专业的前端工程师来解决。另外,在项目中还要弥补设计师在交互设计上的不足,前端工程师在开发过程中起着重要的承上启下的作用。一两个前端工程师就可以让整个开发并行起来,让设计到实现的转换更顺利。明智的公司应该贮备前端工程师资源。

我对这个职业价值观的理解是:掌握技术,并处在用户体验的最前沿。

4.**家庭、学校、社会、职业环境分析**

4.1**家庭环境**

父母是农民,家庭里没有从事互联网相关职业的人,仅此。

4.2 **学校环境**

根据调查,目前没有中国高校开设了前端开发相关的课程,大学生要学相关技术,纯属自行摸索自学,也就是说,若自学有道学有所成,将非常具备竞争力。

4.3 **社会环境**

社会上的IT公司对新兴技术(如HTML5/CSS3)的追捧,意味着前端工程师难求的局面

4.4 **职业环境**

如4.2所言,目前高校没有开设相关课程,相关行业内的前端工程师多为转行的技术人员,但如前文所言,前端工程师需要具备编写代码的能力同时需要一定的审美观,这是大多数转型做前端的程序员所不具备的,也正是大公司很难找到好前端的原因之一。

第三章** **职业目标的定位和分解组合

我的职业目标定位为前端工程师,但这不是一蹴而就的事情,需要不断地摸索和付出。

为了实现毕业能进理想的IT公司深造,我计划如下:

1.**大一**:购买自己的域名,上线自己的独立博客,记录前端学习的轨迹,如来思碑

(前端面试的加分项之一为被面试者拥有记录前端技术并时常维护的独立博客);

2.**大二**:不断把握最新资讯,学习并记录一些前端练习在博客上;

3.**大三**:进一步学习并形成知识体系,找团队做完整的项目,给简历添色;

4.**大四**:做好简历,找实习进行实践,提高技能;

第四章** **具体执行计划

职业定位后执行计划的大致步骤如第三章,具体细化到每一天,无非就是利用闲暇时间多看书,多练习:

1.**看书**

2.**练习**,不断实践,在实践中加强对理论的理解,记录在 来思碑博客

3.**借鉴**,跟进行业资讯,订阅牛人博客,在他人经验的基础上多家模仿以增加自己的经验,将好的书单好的建议收藏加以学习,记录在个人 笔记本Evernote

第五章** **评估调整

对于评估调整,我的做法是,我会将这篇文章发布在我的博客上,时刻鞭策自己执行计划,敦促自己不断学习。

结束语

   这是职业生涯规划课上的一次作业,旨在让我们学生根据自身情况写一份规划书,我百度了一下,发现大部分规划书都写得工工整整各种排版很花俏,目录也很严肃,但最后我想,这种规划书是拿来交作业而不是拿来执行的吧?

变化不在计划中,真正需要的是不断地学习进而总结经验以知晓下一步的学习方向。视野广了,学什么都知道有哪些套路了。

拿我自己做例子,一开始写个简单的网页都要半天,但如今看了不少的博客不少的文章,知晓了前端开发这行业的发展情况,对自己有了大体的规划,就没必要浮躁了,只需要静下心来,按着笔记本里的书单,一本一本地看,看完不断练习,接着搜集各种公司关于该行业的面试题,对着面试题目不断地查缺补漏,然后,美美的写个网页版的简历,投了!

呵呵,看似简单,实则道路曲折行路难啊,我需要不断地纠正学习轨迹,不断地发奋学习才是。