审查元素consule中的coco handlee是什么意思

React 入门实例教程 - 阮一峰的网络日志
React 入门实例教程
现在最热门的前端框架,毫无疑问是
上周,基于 React 的
发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑。
React 起源于 Facebook 的内部项目,因为该公司对市场上所有 ,都不满意,就决定自己写一套,用来架设
的网站。做出来以后,发现这套东西很好用,就在2013年5月了。
由于 React 的设计思想极其独特,属于革命性创新,性能出众,代码逻辑却非常简单。所以,越来越多的人开始关注和使用,认为它可能是将来 Web 开发的主流工具。
这个项目本身也越滚越大,从最早的UI引擎变成了一整套前后端通吃的 Web App 解决方案。衍生的 React Native 项目,目标更是宏伟,希望用写 Web App 的方式去写 Native App。如果能够实现,整个互联网行业都会被颠覆,因为同一组人只需要写一次 UI ,就能同时运行在服务器、浏览器和手机(参见)。
既然 React 这么热门,看上去充满希望,当然应该好好学一下。从技术角度,可以满足好奇心,提高技术水平;从职业角度,有利于求职和晋升,有利于参与潜力大的项目。但是,好的 React 教程却不容易找到,这一方面因为这项技术太新,刚刚开始走红,大家都没有经验,还在摸索之中;另一方面因为 React 本身还在不断变动,API 一直在调整,至今没发布1.0版。
我学习 React 时,就很苦恼。有的教程讨论一些细节问题,对入门没帮助;有的教程写得不错,但比较短,无助于看清全貌。我断断续续学了几个月,看过二十几篇教程,在这个过程中,将对自己有帮助的 Demo 都收集下来,做成了一个库
下面,我就根据,写一篇全面又易懂的 React 入门教程。你只需要跟着每一个 Demo 做一遍,就能初步掌握 React 。当然,前提是你必须拥有基本 JavaScript 和 DOM 知识,但是你读完就会发现,React 所要求的预备知识真的很少。
React 的安装包,可以到下载。不过, 已经自带 React 源码,不用另外安装,只需把这个库拷贝到你的硬盘就行了。
$ git clone :ruanyf/react-demos.git
如果你没安装 git, 那就直接下载 。
下面要讲解的12个例子在各个 Demo 子目录,每个目录都有一个 index.html 文件,在浏览器打开这个文件(大多数情况下双击即可),就能立刻看到效果。
需要说明的是,React 可以在浏览器运行,也可以在服务器运行,但是本教程只涉及浏览器。一方面是为了尽量保持简单,另一方面 React 的语法是一致的,服务器的用法与浏览器差别不大。
是服务器首屏渲染的例子,有兴趣的朋友可以自己去看源码。
一、HTML 模板
使用 React 的网页源码,结构大致如下。
&!DOCTYPE html&
&script src="../build/react.js"&&/script&
&script src="../build/react-dom.js"&&/script&
&script src="../build/browser.min.js"&&/script&
&div id="example"&&/div&
&script type="text/babel"&
// ** Our code goes here! **
上面代码有两个地方需要注意。首先,最后一个 &script& 标签的 type 属性为 text/babel 。这是因为 React 独有的 JSX 语法,跟 JavaScript 不兼容。凡是使用 JSX 的地方,都要加上 type="text/babel" 。
其次,上面代码一共用了三个库: react.js 、react-dom.js 和 Browser.js ,它们必须首先加载。其中,react.js 是 React 的核心库,react-dom.js 是提供与 DOM 相关的功能,Browser.js 的作用是将 JSX 语法转为 JavaScript 语法,这一步很消耗时间,实际上线的时候,应该将它放到服务器完成。
$ babel src --out-dir build
上面命令可以将 src 子目录的 js 文件进行语法转换,转码后的文件全部放在 build 子目录。
二、ReactDOM.render()
ReactDOM.render 是 React 的最基本方法,用于将模板转为 HTML 语言,并插入指定的 DOM 节点。
ReactDOM.render(
&h1>Hello, world!&/h1>,
document.getElementById('example')
上面代码将一个 h1 标题,插入 example 节点(查看 ),运行结果如下。
三、JSX 语法
上一节的代码, HTML 语言直接写在 JavaScript 语言之中,不加任何引号,这就是 ,它允许 HTML 与 JavaScript 的混写(查看
var names = ['Alice', 'Emily', 'Kate'];
ReactDOM.render(
names.map(function (name) {
return &div>Hello, {name}!&/div>
document.getElementById('example')
上面代码体现了 JSX 的基本语法规则:遇到 HTML 标签(以 & 开头),就用 HTML 规则解析;遇到代码块(以 { 开头),就用 JavaScript 规则解析。上面代码的运行结果如下。
JSX 允许直接在模板插入 JavaScript 变量。如果这个变量是一个数组,则会展开这个数组的所有成员(查看
var arr = [
&h1>Hello world!&/h1>,
&h2>React is awesome&/h2>,
ReactDOM.render(
&div>{arr}&/div>,
document.getElementById('example')
上面代码的arr变量是一个数组,结果 JSX 会把它的所有成员,添加到模板,运行结果如下。
React 允许将代码封装成组件(component),然后像插入普通 HTML 标签一样,在网页中插入这个组件。React.createClass 方法就用于生成一个组件类(查看 )。
var HelloMessage = React.createClass({
render: function() {
return &h1>Hello {this.props.name}&/h1>;
ReactDOM.render(
&HelloMessage name="John" />,
document.getElementById('example')
上面代码中,变量 HelloMessage 就是一个组件类。模板插入 &HelloMessage /& 时,会自动生成 HelloMessage 的一个实例(下文的"组件"都指组件类的实例)。所有组件类都必须有自己的 render 方法,用于输出组件。
注意,组件类的第一个字母必须大写,否则会报错,比如HelloMessage不能写成helloMessage。另外,组件类只能包含一个顶层标签,否则也会报错。
var HelloMessage = React.createClass({
render: function() {
return &h1>
Hello {this.props.name}
上面代码会报错,因为HelloMessage组件包含了两个顶层标签:h1和p。
组件的用法与原生的 HTML 标签完全一致,可以任意加入属性,比如 &HelloMessage
name="John"& ,就是 HelloMessage 组件加入一个 name 属性,值为 John。组件的属性可以在组件类的 this.props 对象上获取,比如 name 属性就可以通过 this.props.name 读取。上面代码的运行结果如下。
添加组件属性,有一个地方需要注意,就是 class 属性需要写成 className ,for 属性需要写成 htmlFor ,这是因为 class 和 for 是 JavaScript 的保留字。
五、this.props.children
this.props 对象的属性与组件的属性一一对应,但是有一个例外,就是 this.props.children 属性。它表示组件的所有子节点(查看 )。
var NotesList = React.createClass({
render: function() {
React.Children.map(this.props.children, function (child) {
return &li>{child}&/li>;
ReactDOM.render(
&NotesList>
&span>hello&/span>
&span>world&/span>
&/NotesList>,
document.body
上面代码的 NoteList 组件有两个 span 子节点,它们都可以通过 this.props.children 读取,运行结果如下。
这里需要注意, this.props.children 的值有三种可能:如果当前组件没有子节点,它就是 undefined ;如果有一个子节点,数据类型是 object ;如果有多个子节点,数据类型就是 array 。所以,处理 this.props.children 的时候要小心。
React 提供一个工具方法
来处理 this.props.children 。我们可以用 React.Children.map 来遍历子节点,而不用担心 this.props.children 的数据类型是 undefined 还是 object。更多的 React.Children 的方法,请参考。
六、PropTypes
组件的属性可以接受任意值,字符串、对象、函数等等都可以。有时,我们需要一种机制,验证别人使用组件时,提供的参数是否符合要求。
组件类的PropTypes属性,就是用来验证组件实例的属性是否符合要求(查看 )。
var MyTitle = React.createClass({
propTypes: {
title: React.PropTypes.string.isRequired,
render: function() {
return &h1> {this.props.title} &/h1&;
上面的Mytitle组件有一个title属性。PropTypes 告诉 React,这个 title 属性是必须的,而且它的值必须是字符串。现在,我们设置 title 属性的值是一个数值。
var data = 123;
ReactDOM.render(
&MyTitle title={data} /&,
document.body
这样一来,title属性就通不过验证了。控制台会显示一行错误信息。
Warning: Failed propType: Invalid prop `title` of type `number` supplied to `MyTitle`, expected `string`.
更多的PropTypes设置,可以查看。
此外,getDefaultProps 方法可以用来设置组件属性的默认值。
var MyTitle = React.createClass({
getDefaultProps : function () {
title : 'Hello World'
render: function() {
return &h1& {this.props.title} &/h1&;
ReactDOM.render(
&MyTitle /&,
document.body
上面代码会输出"Hello World"。
七、获取真实的DOM节点
组件并不是真实的 DOM 节点,而是存在于内存之中的一种数据结构,叫做虚拟 DOM (virtual DOM)。只有当它插入文档以后,才会变成真实的 DOM 。根据 React 的设计,所有的 DOM 变动,都先在虚拟 DOM 上发生,然后再将实际发生变动的部分,反映在真实 DOM上,这种算法叫做
,它可以极大提高网页的性能表现。
但是,有时需要从组件获取真实 DOM 的节点,这时就要用到 ref 属性(查看
var MyComponent = React.createClass({
handleClick: function() {
this.refs.myTextInput.focus();
render: function() {
&input type="text" ref="myTextInput" />
&input type="button" value="Focus the text input" onClick={this.handleClick} />
ReactDOM.render(
&MyComponent />,
document.getElementById('example')
上面代码中,组件 MyComponent 的子节点有一个文本输入框,用于获取用户的输入。这时就必须获取真实的 DOM 节点,虚拟 DOM 是拿不到用户输入的。为了做到这一点,文本输入框必须有一个 ref 属性,然后 this.refs.[refName] 就会返回这个真实的 DOM 节点。
需要注意的是,由于 this.refs.[refName] 属性获取的是真实 DOM ,所以必须等到虚拟 DOM 插入文档以后,才能使用这个属性,否则会报错。上面代码中,通过为组件指定 Click 事件的回调函数,确保了只有等到真实 DOM 发生 Click 事件之后,才会读取 this.refs.[refName] 属性。
React 组件支持很多事件,除了 Click 事件以外,还有 KeyDown 、Copy、Scroll 等,完整的事件清单请查看。
八、this.state
组件免不了要与用户互动,React 的一大创新,就是将组件看成是一个状态机,一开始有一个初始状态,然后用户互动,导致状态变化,从而触发重新渲染 UI (查看
var LikeButton = React.createClass({
getInitialState: function() {
return {liked: false};
handleClick: function(event) {
this.setState({liked: !this.state.liked});
render: function() {
var text = this.state.liked ? 'like' : 'haven\'t liked';
&p onClick={this.handleClick}>
You {text} this. Click to toggle.
ReactDOM.render(
&LikeButton />,
document.getElementById('example')
上面代码是一个 LikeButton 组件,它的 getInitialState 方法用于定义初始状态,也就是一个对象,这个对象可以通过 this.state 属性读取。当用户点击组件,导致状态变化,this.setState 方法就修改状态值,每次修改以后,自动调用 this.render 方法,再次渲染组件。
由于 this.props 和 this.state 都用于描述组件的特性,可能会产生混淆。一个简单的区分方法是,this.props 表示那些一旦定义,就不再改变的特性,而 this.state 是会随着用户互动而产生变化的特性。
用户在表单填入的内容,属于用户跟组件的互动,所以不能用 this.props 读取(查看
var Input = React.createClass({
getInitialState: function() {
return {value: 'Hello!'};
handleChange: function(event) {
this.setState({value: event.target.value});
render: function () {
var value = this.state.
&input type="text" value={value} onChange={this.handleChange} />
&p>{value}&/p>
ReactDOM.render(&Input/>, document.body);
上面代码中,文本输入框的值,不能用 this.props.value 读取,而要定义一个 onChange 事件的回调函数,通过 event.target.value 读取用户输入的值。textarea 元素、select元素、radio元素都属于这种情况,更多介绍请参考。
十、组件的生命周期
组件的分成三个状态:
Mounting:已插入真实 DOM
Updating:正在被重新渲染
Unmounting:已移出真实 DOM
React 为每个状态都提供了两种处理函数,will 函数在进入状态之前调用,did 函数在进入状态之后调用,三种状态共计五种处理函数。
componentWillMount()
componentDidMount()
componentWillUpdate(object nextProps, object nextState)
componentDidUpdate(object prevProps, object prevState)
componentWillUnmount()
此外,React 还提供两种特殊状态的处理函数。
componentWillReceiveProps(object nextProps):已加载组件收到新的参数时调用
shouldComponentUpdate(object nextProps, object nextState):组件判断是否重新渲染时调用
这些方法的详细说明,可以参考。下面是一个例子(查看
var Hello = React.createClass({
getInitialState: function () {
opacity: 1.0
componentDidMount: function () {
this.timer = setInterval(function () {
var opacity = this.state.
opacity -= .05;
if (opacity & 0.1) {
opacity = 1.0;
this.setState({
opacity: opacity
}.bind(this), 100);
render: function () {
&div style={{opacity: this.state.opacity}}>
Hello {this.props.name}
ReactDOM.render(
&Hello name="world"/>,
document.body
上面代码在hello组件加载以后,通过 componentDidMount 方法设置一个定时器,每隔100毫秒,就重新设置组件的透明度,从而引发重新渲染。
另外,组件的style属性的设置方式也值得注意,不能写成
style="opacity:{this.state.opacity};"
style={{opacity: this.state.opacity}}
这是因为 是一个对象,所以第一重大括号表示这是 JavaScript 语法,第二重大括号表示样式对象。
十一、Ajax
组件的数据来源,通常是通过 Ajax 请求从服务器获取,可以使用 componentDidMount 方法设置 Ajax 请求,等到请求成功,再用 this.setState 方法重新渲染 UI (查看
var UserGist = React.createClass({
getInitialState: function() {
username: '',
lastGistUrl: ''
componentDidMount: function() {
$.get(this.props.source, function(result) {
var lastGist = result[0];
if (this.isMounted()) {
this.setState({
username: lastGist.owner.login,
lastGistUrl: lastGist.html_url
}.bind(this));
render: function() {
{this.state.username}'s last gist is
&a href={this.state.lastGistUrl}>here&/a>.
ReactDOM.render(
&UserGist source="https://api.github.com/users/octocat/gists" />,
document.body
上面代码使用 jQuery 完成 Ajax 请求,这是为了便于说明。React 本身没有任何依赖,完全可以不用jQuery,而使用其他库。
我们甚至可以把一个Promise对象传入组件,请看。
ReactDOM.render(
promise={$.getJSON('https://api.github.com/search/repositories?q=javascript&sort=stars')}
document.body
上面代码从Github的API抓取数据,然后将Promise对象作为属性,传给RepoList组件。
如果Promise对象正在抓取数据(pending状态),组件显示"正在加载";如果Promise对象报错(rejected状态),组件显示报错信息;如果Promise对象抓取数据成功(fulfilled状态),组件显示获取的数据。
var RepoList = React.createClass({
getInitialState: function() {
return { loading: true, error: null, data: null};
componentDidMount() {
this.props.promise.then(
value => this.setState({loading: false, data: value}),
error => this.setState({loading: false, error: error}));
render: function() {
if (this.state.loading) {
return &span>Loading...&/span>;
else if (this.state.error !== null) {
return &span>Error: {this.state.error.message}&/span>;
var repos = this.state.data.
var repoList = repos.map(function (repo) {
&a href={repo.html_url}>{repo.name}&/a> ({repo.stargazers_count} stars) &br/> {repo.description}
&h1>Most Popular JavaScript Projects in Github&/h1>
&ol>{repoList}&/ol>
十二、参考链接
, by Sebastian Markb?ge
, by Jack Callister
, by Ken Wheeler
, by Ryan Clark
, by Justin Deal
, by Binary Muse
, by zigomir
一、问题的由来
学懂 JavaScript 语言,一个标志就是理解下面两种写法,可能有不一样的结果。
JavaScript 程序越来越复杂,调试工具的重要性日益凸显。客户端脚本有浏览器,Node 脚本怎么调试呢?&p& 开头必须强调一点:&b&比余额宝好的理财方式很多,但在探索比余额宝更好的理财方式的时候,很多人吃过血淋淋的亏&/b&&/p&&p&这几年网叔亲眼所见,甚至接触过很多人在这条探索路上理财致贫。&b&从以往的数据看,最近5年时间,国内投资理财返贫的家庭估计有上百万。&/b&&/p&&p&各类金融传销、线下理财,借P2P诈骗的事件层出不穷、大行其道。E租宝、金朝阳这种,动辄就是几百亿老百姓的血汗钱灰飞烟灭。在叔的投资理财世界里,&b&余额宝是目前经济环境下理财的一条风险分水岭。&/b&跨过余额宝这道分水岭,意味着开始接受风险、承担风险。想要获得更高收益,就必须摆脱无脑理财模式,提升自身投资理财能力!&/p&&p&&b&一、&/b& &b&余额宝是个投资风险的分水岭&/b&&/p&&p&在当前经济条件下,余额宝这种货币基金类理财产品几乎可以闭着眼睛投。然而在找比余额宝更好的理财产品的时候,就没那么简单了!&b&在叔看来,市场上的理财产品可以分三类,风险低于余额宝的,风险跟余额宝差不多的,风险比余额宝高的。&/b&当然,对应风险的,是收益也节节攀升。&/p&&p&&b&第一类,风险低于余额宝的产品。&/b&那自然是红旗下的银行存款。活期0.35%起、定期3%左右。你要问叔到底有没有风险,叔可以明确的告诉你一点,银行都是姓赵的。那你会问叔,既然银行都姓赵,那么就什么问题都没有了吗?理论上当然会有,但只要红旗不倒,问题不会太大。如果你还有恐慌的话,记住,每个银行存款不要超过50万。50万以内,即便银行倒闭,还有保险公司赔。还怕?就专挑大银行,远离城乡小银行。至于外资……那不是咱说的银行概念。&/p&&p&&b&第二类,风险与余额宝类似的产品。&/b&余额宝本质是货币基金,货币基金类产品的风险差别都不是特别大,目前阶段收益率大概能维持到4%左右。风险至于有多大?总体来讲非常小,用叔前面讲的,投资人基本闭着眼睛无脑投都不太会出事(当然,叔也建议大家不要孤注一掷把全部资产都放在里面,要不万一你就只能跳楼了)。在这个区间还有一个知名产品叫万能险。虽然叫险,但本质是款理财产品。按日复利计息,一年大概4%-5%左右,跟余额宝也差不多。因为保险公司在红旗下的特殊性,也基本属于低风险理财产品。不过近年因为像宝能姚振华这样拿着万能险大搞资本“外遇”,已经大部分被叫停。现在还有个位数的保险公司在提供。&/p&&p&&b&第三类,风险高于余额宝的产品。这是本文的重点,也就是投资理财市场风险分水岭之上的产品,不满足“苟且于一天一个包子”有志青年的选择。&/b&这个阶段的产品门槛高,风险和投资要求增加,自然收益也水涨船高。5%起步,到年化300%+的都有。一个显著特点就是“不怕你不玩,就怕你没钱玩”。私募基金、信托100万门槛为难了不少没钱又想翻身的屌丝朋友(当然土豪朋友请自便,想玩什么就玩什么),怎么办呢,目前阶段诸如P2P这样的新型理财模式就满足了这部分人的需求。100元起投,收益率虽然说降了不少,但也在10%上下,和信托相当。&/p&&p&&b&当然这部分钱不是那么好赚的,是要承受风险的。&/b&前年股灾时,投资公募、私募赔钱的大有人在。至于误入那些金融诈骗、金融传销、野鸡交易所、原始股陷阱的朋友,叔这里要奉劝那些没有做好承受风险准备,没有好好学习的朋友,就不要乱打听几个看起来很美的产品,就擅自跨过那道分水岭。&/p&&figure&&img src=&https://pic1.zhimg.com/50/v2-599b022dbbff191a83bdaac98e5be062_b.jpg& data-rawwidth=&478& data-rawheight=&614& class=&origin_image zh-lightbox-thumb& width=&478& data-original=&https://pic1.zhimg.com/50/v2-599b022dbbff191a83bdaac98e5be062_r.jpg&&&/figure&&p&&b&二、&/b& &b&跨过分水岭,将是另一个世界跨过“余额宝”这座分水岭,是另一个世界。&/b&&/p&&p&叔见过不少人借此飞黄腾达,屌丝翻身,也有不少人,贸然进入,理财致贫。叔今天作为一个过来人,告诉你们一点宝贵的关于投资理财的人生经验。&/p&&p&&b&1、跨过这道分水岭钱,你要扪心自问:是否准备好承担一定的风险?&/b&&/p&&p&当你决定越过分水岭后,心里上、财务做好接受风险亏损的可能性。合理规划财务,使用闲置资金投资,最后不要跑出你的能力圈,做些无法接受的风险的项目。&/p&&p&&b&2、你是否准备好了投资理财学习的持久战?&/b&&/p&&p&风险高低是相对的,差别在于认知水平与经验。&/p&&p&巴菲特花5.92亿美元买入可口可乐,如此大手笔的投资,传说股神花了几分钟就思考完毕。于是社会小白崇拜之情油然而生。但是,那也只是传说,即便是真,也是基于投资大师几十年的坚持不懈的学习、认真思考总结的基础上的果断决策!&/p&&p&&b&投资理财之路,也是苦行僧之路。&/b&我们看到,每一个投资大师最后都变成了哲学家。对于我们普通人,先要开始学习基础知识。先搞清楚什么是基金、什么是信托、区分出投资收益与利息,不要求成为专家,至少要知道钱到底去哪了。其次找值得信任的前辈求教。那些社交软件上或论坛里拉拢你做原油、期货的多半是野鸡平台的销售,坑你钱那是迟早的事。至于留号加群、给予带盘指导的“老司机”,谁知道那个“老司机”会不会翻车。即便是货真价实的老师,但老话说得好,“教拳不教步,教步打师父”,真正的技术还是要自己去体会、领悟得来。&/p&&p&&b&3、清楚区别理财、投资与投机&/b&&/p&&p&&b&简单讲,理财的第一目标是保值,追求的是立于不败之地。&/b&不寄希望其能通过理财大富大贵。是普通家庭的首选。&/p&&p&&b&投资则是充满进攻性的,但一般都有比较长的周期,比较艰辛的学习磨炼。&/b&投资市场对人要求较高,风险较大,但做的好可以实现财务自由。&/p&&p&&b&投机,简单讲就是短期风险套利。&/b&一般不考虑未来,能赚一票是一票,甚至疯狂到火中取栗。另外,投资高手做的事看起来是投机,但实际却是投资,其背后的差别就是功利和积累。投机一般来讲都是风险失控状态下的行为,如果你能将别人失控状态下的投机变成可控,就是投资高人&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-7705dffde172fa4b7e85a998c47bed3c_b.jpg& data-rawwidth=&458& data-rawheight=&594& class=&origin_image zh-lightbox-thumb& width=&458& data-original=&https://pic2.zhimg.com/50/v2-7705dffde172fa4b7e85a998c47bed3c_r.jpg&&&/figure&&p&&b&4、最后简单说说如何进行资产配置&/b&&/p&&p&无论是谁,开始投资之前,请珍惜你的本金。特别是那些996的小白领,你们的钱来之不易(土豪请随意)。而资产配置,就是从珍惜本金开始的。&/p&&p&&b&对于一般家庭来说,资产配置的核心要点就是保住本金,控制风险,同时在此基础上能步步为营财富增值。&/b&一般来讲,50%的资产建议投低风险理财产品,银行储蓄,货币基金等等。然后,20%可以选择适当收益型的P2P,但切忌盲从,只找背景深的。20%可以尝试股票和股票基金,最后10%左右配置点保险,一般来讲买个40万以上的重疾还是必要的。&/p&&p&&b&对于土豪家庭来说,可选择的空间就大了。只要不乱来,一般都可以。&/b&信托、私募、海外资产、保险等多渠道配置资产,分散风险,保证资产稳健增长。在人民币贬值的大背景下,选择配置美元资产对冲汇率风险。信托可以重点关注一下,一来避税、二来如果破产,信托资产不在清算资产之列。&/p&&br&&p&&b&写在最后&/b&&/p&&p&1、投资上有什么疑惑,可以扫描下面的“发财树”在公众号留言,我会集中回答(知乎上的少,留言一般看不到)。&/p&&p&2、问问题的时候,不要“在吗”?直接把你的问题完整写出来就行。&/p&&p&3、如果问问题,自己先调研基础信息。不要上来直接问:某某产品安全么?(该类问题一律不回复)。问平台的正确方式:把让你不安的原因和材料先整理发给叔。&b&叔的态度:投资靠自己,但能帮的尽量帮&/b&&/p&&p&网叔:智多星理财师合伙人, 互联网金融资深人士 。独立,理性。热爱钱更在乎良善。闲来聊两句常识,骂几个混蛋,喝两杯小酒。网叔不是文明人,衣冠禽兽请绕道。关注网叔,微信公众号:智多星理财师(zdxlcs)。 &/p&&p&&a href=&//link.zhihu.com/?target=http%3A//weixin.qq.com/r/6T_OlrHEb_wQrfX192r7& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&weixin.qq.com/r/6T_OlrH&/span&&span class=&invisible&&Eb_wQrfX192r7&/span&&span class=&ellipsis&&&/span&&/a& (二维码自动识别)&/p&
开头必须强调一点:比余额宝好的理财方式很多,但在探索比余额宝更好的理财方式的时候,很多人吃过血淋淋的亏这几年网叔亲眼所见,甚至接触过很多人在这条探索路上理财致贫。从以往的数据看,最近5年时间,国内投资理财返贫的家庭估计有上百万。各类金融传…
&p&IT女,刚毕业时工资6000,加绩效分红每月20k左右,可惜做了不到一年,回老家了,开始了苦逼的生活。公务员工资二千多一点,嫌少,无聊,考注会,进了当地资源大牛企业,工资才一千多,就比最低工资标准高一点点,搞IPO,忙的要死,技能嗖嗖嗖的疯长,但工资不涨反降,最低工资标准一直涨,我们都没涨过,后来发现社保缴费最低基数都比我们工资高,三年了,实在受不了,跳槽。到第一家民企,化工类,工资2500,第二家3000,第三家3500,第四家9000加各种绩效福利,后来家里有事,不得不离职。由于老板认可我的业务能力 ,让我做了他旗下小公司的财务副总,不用坐班,按业绩,每月20k+,业绩抽成十个点起步。再后来因为家庭原因,不得不完全放弃工作。现在在老家,抽空就学习,考证,学投资理财。出门经常遇到第一个资源国企的同事,他们看不起我,洋洋自得,觉得自己有份稳定工作比我高贵的多,殊不知,我用了三年时间已经挣够了他们在那里一辈子都挣不到的钱。现在他们工资普涨,才刚刚二千,社保缴费基数最低2324,他们所说的关系,不过就是认识一群和他们一样的人,温饱而已,办个事到处求人。差距已存在,不必回头。&/p&&p&有人说,不要介意工资,但职场上,工资是给于劳动者最直观的认可和尊重。努力很重要,但选择更重要,你的优秀只配给懂得人,牡丹不可如草芥一样,让牛给嚼了,趁着年轻,多折腾,见见世面,多些技能点,让自己过的更好。&/p&&p&&br&&/p&&p&===================================&/p&&p&大家的评论我集中回答一下。我毕业后,第一份工作是在广深一带,工资基数本来就高,我在的项目人员精简,业绩很好,所以人均业绩绩效比较高。后来回老家,一个十八线的小城镇,工资低很正常。国企的工资以前算很好,教师和公务员每月领七八百的时候,我们这里发一千六七,那会儿绝对是好单位。教师公务员拿三四千的时候,我们还是一千六千。最近工资改革,行政事业单位的工资涨幅比较大,国企不得不普涨,才刚过两千,这就太渣了,连饭店收银的都不如。事实就是这样,你信不信他都存在,一线职工更低,加上补助到手才一千五左右,还经常停产放假,放假期间社保不断,工资只发几百块,但人随时待命,让你回来立马就要回来。这种企业放在知乎上没人相信他的存在,但是他就是磐石般的存在着,解决了本地的大部分就业。大把的人花钱把孩子往里边送,就图个稳定、人脉、养老金。&/p&&p&对稳定的理解各有各的看法,在我看来,稳定就是指不用为生计操心,旱涝保收,省心。至于收多少才能满足你的预期,那要看自己的期望。比如公务员,地方领导影响不到你的工资,只能影响你的津贴补助,所以算是稳定的。像我们这种领导一句话不要任何凭据就能扣掉你三分之一收入的,根本谈不上稳定。还要有闲去做你自己的事,保证足够的假期。现在哪里都做不到,我们是生产企业,二十四小时运转,冬夏不停,放假不放人,就算躺在手术台上,还是一群人找你干活,真感觉是彻底的卖身了。匆匆结婚,结了婚一年夫妻俩见不了几回面的特别多,所以,在我们这么落后,从一而终占主流观念的地方,这个企业的离婚率几乎赶超一线城市。不在内部,永远不会知道这些事。所以,这个地方跟稳定不沾边,我会除了这份工作,一无所有。&/p&&p&人脉,小农社会的人都比较孤独,渴望人群,所以觉得在一个单位里认识好多人好开心,认识人多就叫有人脉。但我是有门槛的,我不可能让谁随意出现在我的生活里。所以那几年集团几千号人几乎都认识我,但我能认出的人很少。这人脉有什么用呢?如果家里有生意,在这么大的群体里会让你家的生意更上一层楼。搞养殖的跟职工食堂攀上关系,就赚死了。每月要集中采购劳保用品、福利用品,随便拿下一个,能顶日常零售至少一个月的销量。代理保险的更厉害,建工险、车险、意外险都是必须买的,有钱的职工会主动找熟人理财险,有疾病险也会推销给你。至于别的事,就别妄想了。为什么呢?因为是国企,打交道的大部分是行政事业单位。在人家眼里,国企职工就是低人一等,是奴才一样的存在。所以你别指望这里的人在这方面帮你办什么事,不给你阻挠你就烧高香了,一切还是要靠自己。经过两年的运作,我彻底切掉了无效社交。有用的人、有趣的人,才叫人脉,对吧?这是我的理解。&/p&&p&另外再说一下养老金。好多年轻孩子,不知道为什么会有退休金,看见哪个单位的退休职工有养老金就觉得是单位好,一窝蜂往里边扎。首先你们得知道,退休金并不是单位给你们发的,而是社保给你们发的。如果你在私企工作,他给你交的有社保,那一样可以领退休金的。而且你能够保证,不管换不换工作,你的社保交费总年限要足够长,最低十五年,最好可以交到你退休,那恭喜你,你可以领养老金。所以一样的待遇,看环境。在哪里工作顺心,就在哪里做,只要有社保,就不用担心自己的养老问题。另外,工资高的小朋友一定要长个心眼儿,看一下你工资条上的社保缴费是按什么交的,假如公司给你开的基本工资是用1万,但五险一金合起来,每月只扣你500,那你就被坑了。因为你的社保交费基数肯定不是1万,所以你的退休金会有,但会很低。养老金是抗通胀的最佳储蓄,没有之一,趁自己有能力,给自己多存一点。在养老方面,国企的确有个福利,那就是内退。本单位工龄达标,年龄达标,可以申请内退。比如女职工法定退休年龄50岁,内退年龄40,就说女职工到40岁就可以申请内退,工资照发不用上班。不管男女,内退年龄都比法定退休年龄早十年。还有病退、因公致残的调岗调薪,探亲假,各种补助,钱不多吧,项目挺多,聊胜于无,其实看起来很美好,的确比无业游民保障高多了。如果你原来一无所有,欢迎加入国企大家庭,他会让你有很多朋友,给你一个保底收入,不会让你饿死。但是,如果你本来起点就很高,期望也不低,这里不是你该呆的地方。领导都是老一辈摸爬滚打到处托关系才得来的职位,他们害怕职工比自己强,木秀于林,风必摧之,太优秀,在这里,只可能八面来风。怎么选择,个体差异很重要,看自己。&/p&&p&&br&&/p&&p&再说一下我的证书,我先考注册会计师,再考的会计从业,是带着注会三门过关成绩应聘进去的,因为没人懂IPO和erp,我就主要负责这两块,erp大半年后就没什么事了,所有IPO的事都是我的。至于工资,不要妄想了,我在的国企只有一线关键技术岗才有议价能力,年薪超过董事长,安排家属工作及教育,工作领空饷,占单位各种福利,孩子教育给安排当地最优。其他人员都只能按人家的岗位一岗一薪,所以有注会和有会计从业待遇是一样的。注册会计师,本来考试准备得很充分,那年本来是可以高分过关的,但是碰上了大家网泄题事件,剩下的三门成绩全部被改了,都不通过。再后来那几年已经没有那么大力气去准备考试了,所以我没有拿到证书。但是实操经验满两年,对内负责集团账务复核,对外负责内控风控测试,是主要负责人,会计事务所、律师事务所、券商都是我在对接,融资领导去跑路和应酬,我做具体资料,所以业务过硬。私企老板不太看重证书,更看重能力,所以我跳槽后才会被认可。这几年,注会已经是夹生饭,不想再吃。再说,这里根本没有这个市场,除了国企集团式管理需要注会知识,别的地方很少用到,这证书不识货的老板看了会以为和会计证一样,识货的看了会吓跑,怕留不住人,所以很鸡肋,就在事务所有用。是事务所的工作和收入,实在是不成比例,还不如做一个全职的会计主管,再去自己接兼职会计来的实在。我找全职工作的时候,如果想入职,亮初级证就行了,亮太多,老板不自在。在外边接活,普通做账说有会计证就行了,做财税咨询、内控改革再亮别的,按需出牌。&/p&&p&最后说一下理财。最早理财是我试用期期间,工资那么低,由于太忙,我没时间花钱,三个月收入3500,老爸给了1000,年终发了260,我存了4000三个月定期。然后后来做熟了,工作接触面也多了,了解到别的,给父母买了重疾险,剩下的钱太鸡肋,买大件买不下,小件又没啥可买的,余额宝收益太少,就去开了股票账户,二百试规则,半年后,本金五千,月收益稳定在一千到二千之间。离职风波后,半年没工作,靠炒股的钱去周报旅游,本地吃喝玩乐,房租完全不靠家里,自己付。再后来,经常碰见交易所的会计,又开始学贵金属交易,风险太大,不可控,戒了。重新工作后,负责的部分有票据流转、小额贷款等,发现挣钱方式真挺多,但还是要控制好风险。我以前的股票操作虽然收益稳,但都是短线,太依靠我自身的状态,再次离职那段时间状态很糟,所以,我重新布局,从专业的学习开始,学证券专业知识,考证。考证目的不是为了考证,主要是能够训练注意力的集中程度,控制思维。效果很好。经过这几年,起起落落,才发现最有道理的一句话就是:万般皆下品,惟有读书高。唯有读书高,但我感觉快要撑不下去的时候,好好读书就能,开辟下一个路口。所以同学们,还是好好学习吧,好好读书,读书真是这世上最高贵的事了。最好的投资,一个是健康,一个是大脑,这两样有了,不愁财。&/p&&p&===================================&/p&&p&今天收到提醒,又看了一下回复,没想到会有这么多人回复我,内容什么样的都有,还有不少发私信求交流的。&/p&&p&想学习的同学自己留心一下官网信息,哪种证书报名什么要求,官网都写的清清楚楚,如果真想学,就去找途径。实在犯懒,可以百度一下,能搜出一堆培训机构,留个信息,他们会回复你,给你详细介绍。&/p&&p&股票操作需要看个人水平,这我没啥可说的,我本金5000,一月收益一两千的时候,我证券科的同事拿着家里的一百多万,月收益超30万,那时候证券公司员工禁止买卖股票,他又不想拉客户,只想做技术,又不想去省会,就托关系来这里。一方面工作时间规律,作息有保障,可以让他好好练技术,另一方面,可以拿公家的钱去练练贵金属操作。贵金属T+0操作,人家一晚上翻倍都很正常。我公司遇到全市金融风暴,半年发不出工资的时候,到处贷款贷不下来,没法周转,人家三个人,拿着证券科的四百多万流动资金,一周创造了一千多万的收益,取出来给整个集团续命。又该有人说我吹牛了。这种事差距很大,你做不到不代表别人做不到,有人割肉就有人吃肉,人家在练技术的时候你在干什么,被割肉的除了喷别人,那你只能喷喷了,别想着哪天能吃肉。&/p&&p&至于家庭,不管家庭怎么样,长辈有事的时候我不可能丢下他们不管,一个长辈有事,我可以边工作边照顾她,如果两三个长辈一起出事,我怎么办?花钱请的护工拿钱不干活,还让老人越住院越糟糕,我能不去医院看着吗?工作可以被替代,你再能干也有人能替代你,家人如果没了你去哪里再找一个?&/p&&p&至于肿瘤,第一次查出来的确给我吓懵了,让开刀,我不敢,当时还在医院照顾家人,身体情绪状态都不好,吃药控制着,但没在意。第二次查出来,发现严重了,又被吓了一回,连续两个月几乎就是在家等死的状态,后来发现再怎么恶化就那样了,等了小半年我还没死,我不好好活着,还能怎样。身体弱一点,该治得治,该调养就调养,人家老太太年轻时得了这个病,头发都掉光了,靠着自己的信念,愣是活到六十岁才痊愈,还漂漂亮亮的,我凭什么这么年轻就要等死,窝囊。该干啥干啥去,注意休息,别胡思乱想,调整路线,整装待发,一样倍儿精神。所以,我现在还有精神刷知乎。&/p&&p&说话太难听的,我已投诉,但我不想再看到这种话,所以本帖我不再关注,不再回复,私信也不再回复。你的言行反应了你的经历,所有的成长都会给你留下烙印。言辞不友善的朋友我不欢迎你,你不喜请绕道,不勉强你看,看了也可以当个故事一笑而过,喷别人有意思吗?&/p&&p&愿意上进就只管上进,愿意安逸了就停下休息,想要什么就去做,不想要什么就丢掉,这就是我要的自由,我会努力朝我的目标去前进,有目标去行动的人都不会过的太差,共勉。&/p&
IT女,刚毕业时工资6000,加绩效分红每月20k左右,可惜做了不到一年,回老家了,开始了苦逼的生活。公务员工资二千多一点,嫌少,无聊,考注会,进了当地资源大牛企业,工资才一千多,就比最低工资标准高一点点,搞IPO,忙的要死,技能嗖嗖嗖的疯长,但工资…
&figure&&img src=&https://pic2.zhimg.com/v2-be9aef5ea72_b.jpg& data-rawwidth=&599& data-rawheight=&316& class=&origin_image zh-lightbox-thumb& width=&599& data-original=&https://pic2.zhimg.com/v2-be9aef5ea72_r.jpg&&&/figure&&p&&b&一、介绍&/b&&/p&&p&国内玩家第一次看到动态壁纸,都是出于一款来自 Wallpaper Engine 的 Steam 程序。它允许将视频、窗口小部件、甚至是有一定交互的网页放置到桌面最下方,2016 年初,被b站up主们广泛传播,被大家熟知。&/p&&figure&&img data-rawheight=&316& src=&https://pic4.zhimg.com/v2-4ac20fe61d5a56d8a43e_b.jpg& data-size=&normal& data-rawwidth=&599& class=&origin_image zh-lightbox-thumb& width=&599& data-original=&https://pic4.zhimg.com/v2-4ac20fe61d5a56d8a43e_r.jpg&&&figcaption&Miku&/figcaption&&/figure&&p&&br&&/p&&p&&b&原理其实并不难,然而&/b&...&/p&&p&前端程序员A:这个 WebGL 特效我能吹一年,赶紧做成壁纸,...什么要写C++的?不可能的,一辈子都不会写中级语言的。&/p&&p&c/c++程序员B:靠...,这帮刁民又想骗我做设计。&/p&&p&&br&&/p&&p&Wallpaper Engine 成功的原因是赢在了稳定性、兼容性和玩家老哥组成的丰富的创意工坊。&/p&&p&本篇文章意在讲解原理,你可以把它当成一个前端程序员的小工具,无法达到商用程度。&/p&&ul&&li&桌面壁纸窗口交互未实现(可以考虑使用 &b&WH_MOUSE_LL&/b&)&/li&&li&占用大量内存(等于是多挂起了一个浏览器)&/li&&li&无法兼容关闭aero的win7 和 win8&/li&&/ul&&p&&br&&/p&&p&这种壁纸小程序,Github上还没有Python 的实现,但是核心方法仅仅是操作win32api,python完全可以实现,你听说过pywin32吗。。。看完这篇教程,你可以做第一个。&/p&&p&&br&&/p&&p&假如你不想了解原理,前端程序员可以直接移步第三步。&/p&&h2&&b&二、实现原理&/b&&/h2&&p&windows 最底层的窗体 Program Manage 就是 Windows 的 shell(如图所示),想要你的窗体出现在最后,只需要把自己的窗体作为 Program Manage 的子窗体,然后隐藏原壁纸就可以了。&/p&&p&嗯??没别的了???&/p&&p&是的。&/p&&p&你可以使用 Visual Studio的 Spy++来查看 Window的窗体。&/p&&figure&&img data-rawheight=&590& src=&https://pic4.zhimg.com/v2-dc7b0ad2b482b4ae4ffe3a_b.jpg& data-size=&normal& data-rawwidth=&919& class=&origin_image zh-lightbox-thumb& width=&919& data-original=&https://pic4.zhimg.com/v2-dc7b0ad2b482b4ae4ffe3a_r.jpg&&&/figure&&br&我们现在知道了,workerw 作为我们的图标和壁纸(灰色的workerw,因为已经隐藏)的父窗体出现在底层窗体之上。&br&&p&博主你又骗我,为什么我的电脑上,只有一个WorkerW,图标和壁纸都黏在一起了?&/p&&figure&&img data-rawheight=&262& src=&https://pic2.zhimg.com/v2-257823bfbaff16b70281b0_b.jpg& data-size=&normal& data-rawwidth=&305& class=&content_image& width=&305&&&/figure&&p&&br&&/p&&p&这是一条神奇的 message,是 windows 为了解决切换壁纸的时候丑陋的闪切而创建的(未公开消息),它使得更换壁纸的时候有一个平滑的过渡但又不影响绘制壁纸,它会分离创建两个 WorkerW,我们只需要隐藏没有 &b&SysListView&/b& (用于存放桌面 icon 的窗体) 的那一个就可以了。&/p&&figure&&img data-rawheight=&870& src=&https://pic1.zhimg.com/v2-8eacebaf51bf_b.jpg& data-size=&normal& data-rawwidth=&600& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic1.zhimg.com/v2-8eacebaf51bf_r.jpg&&&/figure&&p&&br&&/p&&p&那么接下来,你需要做的就是找到窗体,完成任务了:&/p&&div class=&highlight&&&pre&&code class=&language-c&&&span&&/span&&span class=&cp&&#include&/span& &span class=&cpf&&&utils.h&&/span&&span class=&cp&&&/span&
&span class=&n&&HWND&/span& &span class=&n&&_workerw&/span& &span class=&o&&=&/span& &span class=&n&&nullptr&/span&&span class=&p&&;&/span&
&span class=&kr&&inline&/span& &span class=&n&&BOOL&/span& &span class=&n&&CALLBACK&/span& &span class=&nf&&EnumWindowsProc&/span&&span class=&p&&(&/span&&span class=&n&&_In_&/span& &span class=&n&&HWND&/span& &span class=&n&&tophandle&/span&&span class=&p&&,&/span& &span class=&n&&_In_&/span& &span class=&n&&LPARAM&/span& &span class=&n&&topparamhandle&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&HWND&/span& &span class=&n&&defview&/span& &span class=&o&&=&/span& &span class=&n&&FindWindowEx&/span&&span class=&p&&(&/span&&span class=&n&&tophandle&/span&&span class=&p&&,&/span& &span class=&mi&&0&/span&&span class=&p&&,&/span& &span class=&s&&L&SHELLDLL_DefView&&/span&&span class=&p&&,&/span& &span class=&n&&nullptr&/span&&span class=&p&&);&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&defview&/span& &span class=&o&&!=&/span& &span class=&n&&nullptr&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&_workerw&/span& &span class=&o&&=&/span& &span class=&n&&FindWindowEx&/span&&span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span& &span class=&n&&tophandle&/span&&span class=&p&&,&/span& &span class=&s&&L&WorkerW&&/span&&span class=&p&&,&/span& &span class=&mi&&0&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&k&&return&/span& &span class=&nb&&true&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&n&&HWND&/span& &span class=&n&&Utils&/span&&span class=&o&&::&/span&&span class=&n&&GetWorkerW&/span&&span class=&p&&(){&/span&
&span class=&kt&&int&/span& &span class=&n&&result&/span&&span class=&p&&;&/span&
&span class=&n&&HWND&/span& &span class=&n&&windowHandle&/span& &span class=&o&&=&/span& &span class=&n&&FindWindow&/span&&span class=&p&&(&/span&&span class=&s&&L&Progman&&/span&&span class=&p&&,&/span& &span class=&n&&nullptr&/span&&span class=&p&&);&/span&
&span class=&n&&SendMessageTimeout&/span&&span class=&p&&(&/span&&span class=&n&&windowHandle&/span&&span class=&p&&,&/span& &span class=&mh&&0x052c&/span&&span class=&p&&,&/span& &span class=&mi&&0&/span& &span class=&p&&,&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span& &span class=&n&&SMTO_NORMAL&/span&&span class=&p&&,&/span& &span class=&mh&&0x3e8&/span&&span class=&p&&,(&/span&&span class=&n&&PDWORD_PTR&/span&&span class=&p&&)&/span&&span class=&o&&&&/span&&span class=&n&&result&/span&&span class=&p&&);&/span&
&span class=&n&&EnumWindows&/span&&span class=&p&&(&/span&&span class=&n&&EnumWindowsProc&/span&&span class=&p&&,(&/span&&span class=&n&&LPARAM&/span&&span class=&p&&)&/span&&span class=&n&&nullptr&/span&&span class=&p&&);&/span&
&span class=&n&&ShowWindow&/span&&span class=&p&&(&/span&&span class=&n&&_workerw&/span&&span class=&p&&,&/span&&span class=&n&&SW_HIDE&/span&&span class=&p&&);&/span&
&span class=&k&&return&/span& &span class=&n&&windowHandle&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&p&你的窗体需要:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&SetParent((HWND)view-&winId(),Utils::GetWorkerW());
&/code&&/pre&&/div&&p&还是不明白?&/p&&p&github 链接奉上:&a href=&https://link.zhihu.com/?target=https%3A//github.com/ThomasHuai/Wallpaper& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ThomasHuai/Wallpaper&/a&&/p&&p&&br&&/p&&p&&b&为什么 win8 和 win7(关闭areo)不能使用这种方法?&/b&&/p&&figure&&img data-rawheight=&590& src=&https://pic4.zhimg.com/v2-972d9d0df321bf49cac9_b.jpg& data-size=&normal& data-rawwidth=&919& class=&origin_image zh-lightbox-thumb& width=&919& data-original=&https://pic4.zhimg.com/v2-972d9d0df321bf49cac9_r.jpg&&&/figure&&p&这种情况下,SysListView 被直接当做了 Program Manager 的子窗体,但是这并不是关键,关键是壁纸和图标融合在了一起,无论你把你的窗体放到上面位置,都不可能出现在原壁纸与icon 中间。&/p&&h2&&b&三、然而这是一个前端 Demo&/b&&/h2&&p&&br&&/p&&p&&b&发布版下载地址:&/b&&a href=&https://link.zhihu.com/?target=https%3A//github.com/ThomasHuai/Wallpaper/releases& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ThomasHuai/Wallpaper&/a&&/p&&p&&br&&/p&&p&可以使用以下两种方式设置壁纸:&/p&&ul&&li&本地路径&/li&&li&线上URL(可以copy别人的demo地址)&/li&&/ul&&p&假如你是双屏的可以设置三种屏幕布局:&/p&&ul&&li&主屏&/li&&li&侧屏&/li&&li&平铺(延展至多屏)&/li&&/ul&&p&壁纸程序使用的是QT的 WebEngine(5.8),chrome 内核浏览器,相当于在屏幕后面挂起了一个浏览器,也就是说 chrome 能做的,它都可以实现,css3动画,webGL,背景音频 + 音频可视化等,自带了一个粒子动画的demo。&/p&&figure&&img data-rawheight=&1042& src=&https://pic3.zhimg.com/v2-a45bec7dff3c33df7471_b.jpg& data-size=&normal& data-rawwidth=&1839& data-thumbnail=&https://pic3.zhimg.com/v2-a45bec7dff3c33df7471_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1839& data-original=&https://pic3.zhimg.com/v2-a45bec7dff3c33df7471_r.jpg&&&figcaption&粒子动画&/figcaption&&/figure&&br&&br&&figure&&img data-rawheight=&1041& src=&https://pic1.zhimg.com/v2-969dddbdf46e439fcfab_b.jpg& data-size=&normal& data-rawwidth=&1832& data-thumbnail=&https://pic1.zhimg.com/v2-969dddbdf46e439fcfab_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1832& data-original=&https://pic1.zhimg.com/v2-969dddbdf46e439fcfab_r.jpg&&&figcaption&three.js&/figcaption&&/figure&&br&&br&&figure&&img data-rawheight=&1042& src=&https://pic3.zhimg.com/v2-e194b268e1b490eb5ac4d1_b.jpg& data-size=&normal& data-rawwidth=&1842& data-thumbnail=&https://pic3.zhimg.com/v2-e194b268e1b490eb5ac4d1_b.jpg& class=&origin_image zh-lightbox-thumb& width=&1842& data-original=&https://pic3.zhimg.com/v2-e194b268e1b490eb5ac4d1_r.jpg&&&figcaption&three.js&/figcaption&&/figure&&br&&br&&p&&br&&/p&&p&多屏效果:&/p&&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//www.zhihu.com/video/225216& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic1.zhimg.com/80/v2-dbb39f38dd4_b.jpg& data-lens-id=&225216&&
&img class=&thumbnail& src=&https://pic1.zhimg.com/80/v2-dbb39f38dd4_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/225216&/span&
&p&&br&&/p&&p&&br&&/p&&p&Github 项目链接:&/p&&a href=&https://link.zhihu.com/?target=https%3A//github.com/ThomasHuai/Wallpaper& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ThomasHuai/Wallpaper&/a&&p&参考资料:&/p&&a href=&https://link.zhihu.com/?target=https%3A//www.codeproject.com/Articles/856020/Draw-Behind-Desktop-Icons-in-Windows-plus& data-draft-node=&block& data-draft-type=&link-card& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&codeproject.com/Article&/span&&span class=&invisible&&s/856020/Draw-Behind-Desktop-Icons-in-Windows-plus&/span&&span class=&ellipsis&&&/span&&/a&&p&&br&&/p&&p&欢迎点赞评论,关注后续文章,一起交流学习。&/p&&p&&br&&/p&&figure&&img data-rawheight=&247& src=&https://pic4.zhimg.com/v2-3bbc285dbbb09ed2004e7_b.jpg& data-size=&normal& data-rawwidth=&250& class=&content_image& width=&250&&&/figure&
一、介绍国内玩家第一次看到动态壁纸,都是出于一款来自 Wallpaper Engine 的 Steam 程序。它允许将视频、窗口小部件、甚至是有一定交互的网页放置到桌面最下方,2016 年初,被b站up主们广泛传播,被大家熟知。 原理其实并不难,然而...前端程序员A:这个 W…
100w只用7天就能够让你从此走上人生巅峰!&br&&br&1、拿这100w赶紧到银行开个定存单,时间为一年;&br&&br&2、用银行100w定存单在本行办理存单质押贷款,一般最高可贷款额度为存单面值的90%;&br&&br&3、用存单质押贷款过来的90w赶紧全款买一套房子;&br&&br&4、当你银行有百万存款,名下全款价值90万房产的优质信用条件下,用房子到其它银行进行抵押贷款,可贷到70%,也就是63w;&br&&br&5、然后拿这63w进行首付买房,不论是一套或多套,首付三成的条件下你可以买到价值210w的房产;&br&&br&6、经过以上几波操作后,你发现自己成了银行存款百万,名下房产300w的土豪了有木有?是不是想一想还有点小激动呢!别急,7天内咱们还得将100w还回去呢,接下来就是见证奇迹的时刻了;&br&&br&7、将名下价值90w的房产原价卖出套现,然后将价值210w的房产到小额贷款公司进行抵押贷款,额度不用太多10w就够了;&br&&br&8、拿着100w现金在7天内还回去后,你会惊喜的发现,自己的资产拥有:&br&银行存款100w+房产210w=310w&br&&br&欠债:&br&银行欠款90w+房屋贷款147w+小额贷款10w=247w&br&&br&净资产:&br&310w-247w=63w&br&&br&结语:有木有感动到流泪?这些钱都是你的了……
100w只用7天就能够让你从此走上人生巅峰! 1、拿这100w赶紧到银行开个定存单,时间为一年; 2、用银行100w定存单在本行办理存单质押贷款,一般最高可贷款额度为存单面值的90%; 3、用存单质押贷款过来的90w赶紧全款买一套房子; 4、当你银行有百万存款,名…
&p&目前,众多互联网公司APP都嵌入了大量的HTML5,移动端的开发越来越重视,HTML5的运用场景也越来越多了。在&a href=&https://link.zhihu.com/?target=http%3A//www.webclks.com/archives/tag/%25e7%25a7%25bb%25e5%258a%25a8web%25e5%25bc%%258f%2591& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&移动Web开发&/a&的过程中,使用合适的移动WEB UI框架可以大大提升我们的开发效率。下面就把2016年最流行的移动Web前端UI框架分享给大家。&/p&&p&&strong&Amaze UI&/strong&&br&Amaze UI是一个轻量级(所有CSS和JS gzip后100kB左右)、Mobile first的&a href=&https://link.zhihu.com/?target=http%3A//www.webclks.com/archives/tag/%25e5%e7%25ab%25af%25e6%25a1%%259e%25b6& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端框架&/a&, 基于开源社区流行&a href=&https://link.zhihu.com/?target=http%3A//www.webclks.com/archives/tag/%25e5%e7%25ab%25af%25e6%25a1%%259e%25b6& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端框架&/a&编写。&br&Amaze UI Github地址:&a href=&https://link.zhihu.com/?target=https%3A//github.com/amazeui/amazeui& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - amazeui/amazeui: Amaze UI, a mobile-first and modular front-end framework.&/a&&br&Amaze UI官网:&a href=&https://link.zhihu.com/?target=http%3A//amazeui.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Amaze UI | 中国首个开源 HTML5 跨屏前端框架&/a&&/p&&p&&strong&Frozen UI&/strong&&br&Frozen UI 是一个简单易用,轻量快捷,为移动端服务的&a href=&https://link.zhihu.com/?target=http%3A//www.webclks.com/archives/tag/%25e5%e7%25ab%25af%25e6%25a1%%259e%25b6& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&前端框架&/a&,专注于移动web的UI框架,基于腾讯手机QQ规范。&br&Frozen UI Github地址:&a href=&https://link.zhihu.com/?target=http%3A//frozenui.github.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&FrozenUI - 专注于移动web的UI框架&/a&&/p&&p&&strong&SUI&/strong&&br&SUI是一套基于bootstrap开发的前端组件库,同时她也是一套设计规范。通过SUI,可以非常方便的设计和实现精美的页面。&br&SUI官网:&a href=&https://link.zhihu.com/?target=http%3A//sui.taobao.org/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&sui.taobao.org/&/span&&span class=&invisible&&&/span&&/a&&/p&&p&&strong&ZUI&/strong&&br&ZUI是一个开源前端实践方案,帮助你快速构现代跨屏应用。&br&ZUI Github地址:&a href=&https://link.zhihu.com/?target=https%3A//github.com/easysoft/zui& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - easysoft/zui: ZUI is an HTML5 front UI framework.&/a&&/p&&p&&strong&H-ui&/strong&&br&H-ui前端框架是在bootstrap的思想基础上基于 HTML、CSS、JAVASCRIPT开发的轻量级web前端框架,开源免费,简单灵活,兼容性好,满足大多数中国网站。&br&H-ui Github地址:&a href=&https://link.zhihu.com/?target=https%3A//github.com/jackying& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jackying (辉哥) · GitHub&/a&&/p&&p&&strong&pure.css&/strong&&br&pure.css 一组小,响应CSS模块,您可以使用在每一个web项目&br&pure.css Github地址:&a href=&https://link.zhihu.com/?target=https%3A//github.com/yahoo/pure/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - yahoo/pure: A set of small, responsive CSS modules that you can use in every web project.&/a&&/p&&p&&strong&UIkit&/strong&&br&UIkit是YOOtheme团队开发的一款轻量级、模块化的前端框架,可快速构建强大的前端web界面。UIKit使用的变量基于LESS,具有体积小、模块化、可轻松地自定义主题及响应式设计可在多种环境中使用等特点。UIkit中文网为广大国内开发者提供详尽的中文文档、代码实例等,帮助开发者快速掌握并使用这一框架。&br&UIkit Github地址:&a href=&https://link.zhihu.com/?target=https%3A//github.com/uikit/uikit& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - uikit/uikit: A lightweight and modular front-end framework for developing fast and powerful web interfaces.&/a&&/p&&p&&strong&Bootstrap&/strong&&br&Bootstrap是Twitter推出的一个用于前端开发的开源工具包。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。目前,Bootstrap最新版本为3.0 。Bootstrap中文网致力于为广大国内开发者提供详尽的中文文档、代码实例等,助力开发者掌握并使用这一框架。&br&Bootstrap中文网:&a href=&https://link.zhihu.com/?target=http%3A//www.bootcss.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Bootstrap中文网&/a&&/p&&p&&strong&拼图&/strong&&br&拼图号称中国版的Bootstrap,优秀的跨屏响应式布局前端开发框架(CSS框架),国内前端框架先驱及领导者,能自动适应电脑、平板、手机等设备,让web前端开发更简单、快速、便捷。&br&拼图官网:&a href=&https://link.zhihu.com/?target=http%3A//www.pintuer.com/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&pintuer.com/&/span&&span class=&invisible&&&/span&&/a&&/p&&p&&strong&Plane UI&/strong&&br&Plane UI是一个构建 HTML5 应用的跨终端响应式前端界面框架及解决方案。&br&Plane UI Github地址:&a href=&https://link.zhihu.com/?target=https%3A//pandao.github.io/planeui/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Plane UI - HTML5 跨终端响应式前端界面框架&/a&&/p&&p&&strong&Foundation&/strong&&br&Foundation 5是我们最快、最好的构建。多用的功能来帮助编写代码和学习比以往任何时候都要快。&br&Foundation官网:&a href=&https://link.zhihu.com/?target=http%3A//foundation.zurb.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Foundation | The most advanced responsive front-end framework in the world.&/a&&/p&&p&&strong&mui&/strong&&br&mui是最接近原生APP体验的高性能框架。&br&mui Github地址:&a href=&https://link.zhihu.com/?target=https%3A//github.com/dcloudio/mui& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - dcloudio/mui: 最接近原生APP体验的高性能框架&/a&&/p&&p&&strong&WeUI&/strong&&br&WeUI是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信 Web 开发量身设计,可以令用户的使用感知更加统一。包含button、cell、dialog、 progress、 toast、article、icon等各式元素。&br&WeUI Github地址:&a href=&https://link.zhihu.com/?target=https%3A//github.com/weui/weui& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - weui/weui: A UI library by WeChat official design team, includes the most useful widgets/modules in mobile web applications.&/a&&/p&&p&&strong&Arale&/strong&&br&Arale 立足于支付宝的前端需求和国内前端社区,基于Sea.js和spm生态圈,致力发展小而美的前端模块架构,建立了一套从编码测试到部署的开发体系, 是一个开放、简单、易用的前端解决方案。Arale 模块均兼容于 IE6+ 以及 Chrome/Firefox/Safari/Opera 的最新稳定版。&br&Arale官网:&a href=&https://link.zhihu.com/?target=http%3A//aralejs.org/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&aralejs.org/&/span&&span class=&invisible&&&/span&&/a&&/p&&p&&strong&Semantic UI&/strong&&br&Semantic UI 是一款语义化设计的前端开源框架,其功能强大,使用简单,为设计师和开发师提供可复用的完美设计方案。&br&Semantic UI Github地址:&a href=&https://link.zhihu.com/?target=https%3A//github.com/jlukic/Semantic-UI& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - Semantic-Org/Semantic-UI-pt-br: Semantic dá poder a designers e desenvolvedores através da cria??o de um vocabulário comum para UI&/a&&/p&&p&&strong&Jingle UI&/strong&&br&Jingle UI是一个基于html5、css3开发轻量级的移动webapp 框架,提供一些基本交互方式,常用的组件(scroll,actionsheet,sidemenu,toggle,push2refresh……),帮助您更方便的开发移动应用。&br&Jingle UI Github地址:&a href=&https://link.zhihu.com/?target=https%3A//github.com/shixy/Jingle& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - shixy/Jingle: Jingle UI是一个基于html5、css3开发轻量级的移动webapp 框架,提供一些基本交互方式,常用的组件(scroll,actionsheet,sidemenu,toggle,push2refresh......),帮助您更方便的开发移动应用。&/a&&/p&&p&&strong&CMUI&/strong&&br&CMUI 是一个专攻移动网页的 UI 框架,它提供了丰富的组件和简洁的接口,开箱即用。CMUI 帮助开发者摆脱样式细节和兼容性困扰,从而腾出更多精力投入到业务开发中。&br&CMUI Github地址:&a href=&https://link.zhihu.com/?target=https%3A//github.com/CMUI/CMUI& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - CMUI/CMUI: Lightweight UI solution for mobile web.&/a&&br&以上是在长期工作中总结出来的移动WEB UI框架资源,大家可以根据自己的业务需求去选择合适的WEB UI框架。在此不评价任何一个框架的好坏,存在就有他的合理性,总有他适合的场景。感谢这些项目的贡献者,感谢开源力量!&/p&
目前,众多互联网公司APP都嵌入了大量的HTML5,移动端的开发越来越重视,HTML5的运用场景也越来越多了。在的过程中,使用合适的移动WEB UI框架可以大大提升我们的开发效率。下面就把2016年最流行的移动Web前端UI框架分享给大家。Amaze UI Amaze …
我不想说具体的技术点差异,任何运行Web应用的容器都会存在实现差异,最终影响到Web的表现,无论是IE6、7、8,还是Android、iOS,这些差异一天一夜时间都总结不完。&br&&br&排除移动端特有特性(硬件规格、传感器设备等)带来的技术差异之外,移动端与PC端使用的技术本质上都是相同的,如果只考虑IE10+、Chrome这样的现代浏览器,PC端提供给前端的空间只会更大,国情之下(IE10-)让大多数PC前端开发没办法直接使用很多HTML5、CSS3的特性而已。&br&&br&以下是几个我自己总结的移动端开发的核心要点:&br&&br&1、语义化,结构化&br&从以切图为导向到&b&&u&以语义化为导向的页面生产&/u&&/b&,使得页面的结构和层次更加清晰。语义化的页面通常也是结构化的,结构化的页面更利于移动端做多分辨率适配与多浏览器兼容。贴一篇我前两天刚发布的文章《&a href=&//link.zhihu.com/?target=http%3A//www.maxzhang.com/E9%%25E4%25BA%259B%25E5%25B9%25B4%25E6%E4%25BB%25AC%25E4%25B8%%25B5%25B7%25E5%E8%25BF%%259A%%25A1%25B5%25E9%259D%25A2/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&那些年我们一起切过的页面&/a&》。&br&&br&由于移动设备屏幕实际显示像素(物理像素 / 设备像素比 = 实际显示像素)远小于PC屏幕,导致移动Web通常在一屏之内没办法展示出需要的内容,这就会存在更多DOM显示/隐藏的交互,结构化的页面能更好的管理和操作DOM。&br&&br&移动Web还需要适配不同分辨率,分辨率的变化(比如:横竖屏切换)也可能会导致页面DOM显示/隐藏的交互。无论是上面说的JS操作DOM还是CSS3的Media Queries,语义化的、结构化的页面都是更加的选择。&br&&br&2、移动设备特性&br&移动设备特性通常分为两类:&u&&b&影响视觉的和影响触觉的&/b&&/u&,很多具体的HTML5和CSS3技术就是为了适应移动设备特性的解决方案,包括:touch event、geolocation、orientation等。&br&&br&影响视觉包括:&br&&ul&&li&屏幕分辨率&/li&&li&设备像素比&/li&&/ul&视觉部分会直接影响设计稿和产出的图片,也就是上面 @简单 答案里面提到的二倍图、三倍图。&br&&br&影响触觉包括:&br&&ul&&li&触摸屏(用手指操作)&/li&&li&传感器(陀螺仪、GPS等)&/li&&li&软键盘&/li&&/ul&触觉部分会影响到人机交互输入接口,像 @简单 答案里面提到的Touch手势、滑动等都属于输入,还有其他的语音识别、GPS、方位感应等,对应的HTML5、CSS3技术实现可以查阅W3C的相关文档。&br&&br&3、浏览器(WebView)兼容&br&&u&&b&不要用理论解释移动浏览器的兼容BUG,&/b&&/u&&br&&u&&b&不要用理论解释&/b&&/u&&u&&b&移动&/b&&/u&&u&&b&浏览器的兼容BUG,&/b&&/u&&br&&u&&b&不要用理论解释&/b&&/u&&u&&b&移动&/b&&/u&&u&&b&浏览器的兼容BUG,&/b&&/u&&br&&br&重要的事情说三遍,有好多BUG根本就是浏览器的实现缺陷导致,很多问题是无法绕过的,遇到这样的问题只能尽量改进技术实现,但通常都没有完美的技术解决方案,除非更改需求交互和设计,对于一些不是很严重的问题,我都会无视。&br&&br&在一开始设计产品需求和细节时,就应当把一些技术性的问题考虑进来,尽量避免在测试阶段或上线之后才发现,这通常需要很多的经验积累才能做到,需要耐心慢慢来。&br&&br&4、移动端调试&br&95%的调试可以在&u&&b&Chrome DevTools 移动设备模拟器&/b&&/u&下完成,剩下的5%才需要特殊的调试技巧,可以看这个问题的回答《&a href=&http://www.zhihu.com/question/& class=&internal&&怎么在移动端调试web前端? - 计算机网络&/a&》。&br&&br&我现在比较熟悉移动Web开发,99%的调试都能在Chrome下完成。&br&&br&5、关于测试&br&上面说的是开发调试,而非测试。测试是由专门的QA部门完成,目前移动端测试还没有比较先进的测试手段(也许有我不知道而已,这块需要多交流),基本都是靠人工。&br&&br&一定要限定测试运行环境,包括:机型、系统、浏览器(WebView),比如你的WebApp只是运行在微信或微博这样的社交App中,那么就只测试微信、微博WebView。如果不限制运行环境,那即将会是灾难的开始,一是测试压力非常大,二是更大概率的出现一些理论无法解释的BUG,而修复这样的BUG通常要花费80%的时间。&br&&br&------------------------------&br&&br&总的来说就是这些吧,涉及到一些具体的技术点可以看这里 &a href=&//link.zhihu.com/?target=https%3A//github.com/jtyjty99999/mobileTech& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jtyjty99999/mobileTech · GitHub&/a&。
我不想说具体的技术点差异,任何运行Web应用的容器都会存在实现差异,最终影响到Web的表现,无论是IE6、7、8,还是Android、iOS,这些差异一天一夜时间都总结不完。 排除移动端特有特性(硬件规格、传感器设备等)带来的技术差异之外,移动端与PC端使用的技…
一个编辑器(sublime, vim, IDEA等等)&br&一个浏览器(chrome)&br&一个抓包代理工具(fiddler,nproxy等等)&br&一个iPhone&br&一个Android&br&一台iPad
一个编辑器(sublime, vim, IDEA等等) 一个浏览器(chrome) 一个抓包代理工具(fiddler,nproxy等等) 一个iPhone 一个Android 一台iPad
&p&你走到街头,商场,车站,到处逛逛看看,你会发现现在遵守秩序的多半是年轻人,规规矩矩排队的也是年轻人,在公交车上安静玩手机或者小声说话的也是年轻人,活跃在街上会下意识帮陌生人捡一份掉了的文件也是年轻人,比起上一辈,上上一辈,年轻人更有羞耻感,荣辱感,更在意素质,更在意自身的形象,也是年轻人更有朝气去接受一切新鲜事物,敢于批判敢于发声;反而倒是某些混了几十年社会的老一辈在鸡贼的看着这个社会,贪图着各种社会带来的便利还要骂人,也是这些人在车上大声打着电话,大街上乱扔乱吐,插队,耍横,越来越不要脸。你回想你学生时候的样子,是不是谨慎而充满热情的看待一切?多好&/p&&p&学生的样子,就是年轻的样子,无所谓什么没规没矩,这个时代在进步,在发展,新一辈的人越来越聪明,也越来越有个性,他们是无知又闹腾,还有些目无长辈,但终究会变成熟。&/p&&p&现在的大学生怎么了?我挺喜欢现在的这些人,跟他们在一起我才不会觉得我已经是个快30的“中年人”,这些人有着比我们当年更优秀的才华&/p&&p&我很羡慕,也很喜欢。&/p&&p&&br&&/p&&p&——————一觉睡醒后的分割线————————&/p&&p&凡事不说绝对,只说大体的情况,所以我不去评论区一一讨论了&/p&&p&每一辈都有自己的困惑和压力,也有属于自己时代的局限性,这是避免不了的,但这不是你不去追随时代,不去包容新鲜事物的理由;如果你不能那么快的接受新鲜事物,那也没关系,带有包容性的去看待一切;长辈们动不动拿身份说话,指点批判这一辈如此不合规矩不如当年,无非就是打心底的觉得自己的时代才是标准的样子&/p&&p&局座大几十了尚且还会在网上和年轻人互动,去适应现代化的讯息来传承他的经验和知识啊!&/p&&p&&br&&/p&&p&当然部分“大学生”也不要太得意,这社会是吃人的,但也是育人的,年轻不是狂妄和无知的资本,沉下心来虚心接受上一辈的教诲,把你们的傲气和个性收敛一点,在逐步成长的路上不断完善自己,壮大自己,才是最光明最有希望的“这一代”。&/p&&p&&br&&/p&&p&——————解禁后的分割线——————————&/p&&p&被管理误伤了永久禁言,然后沟通了一下又还原了~~~于是看着评论和点击暴涨又不能说话··嗯··&/p&&p&先谢谢各位的“您”,那个···我觉得自己还是不老的,实际上我心态还是很年轻~&/p&&p&&br&&/p&&p&P1&/p&&p&我过去曾有一些年跟家里频繁吵架,冷战,甚至决意要分开,后来逐步缓和,那是因为年龄的增长和自身阅历的积累下,人会看淡很多事,也会释然很多事;有一年我妈又谈起她那个工厂里某个年轻人如何如何的时候,我就逐渐的明白,一代人的思维是很难改变的,你可以去教导,他们也懂,但他们不一定听得进,有些事就是很简单的“可以理解,但不能接受”。而后的几年里,我也慢慢的发现有些年轻的偶像我也不是太能接受,比如鹿晗,比如TFBOYS,比如BIGBANG,还有各种流行的元素慢慢在让我觉得不是很能适应。我知道这就是一代人的差别,但无妨,我也会偶尔看看鹿晗演了些啥,还知道他也是个球迷,球踢得不错,TF三小哥哥如今也要上大学了,没什么负面新闻也挺好,BIGBANG的歌我也听了不少,还特意买了网易云会员方便在线听,很自然的,这些东西能接洽进去,不会又觉得自己跟这个社会有什么脱节的地方&/p&&p&很多事情同理&/p&&p&&br&&/p&&p&P2&/p&&p&认识的一刚毕业的小姑娘很羡慕我,买件衣服不看价,600,800,1000,喜欢就行,几分钟内就直接去付款了,吃东西就是只挑环境和口味,不先看价格……我说这些个价格其实不贵,你几年内在工作后完全可以去消费而没有压力,这些根本不需要羡慕,反而是我羡慕你,因为你们有无限的可能性去创造自己的未来,而我必须要谨慎的对待自己接下来的每一步,我所失去的,正是你们所拥有的。&/p&&p&我还记得大学毕业的时候我就想着要去北京闯一闯,然而很多年过去了,我始终没去过北京,在那里的同学也早就回来结婚生子,北上在我这个年龄是个很不切实际的想法;那如果我再年轻个6,7岁呢?我想我又会开始做很多梦&/p&&p&&br&&/p&&p&P3&/p&&p&我爸说他有一些赚钱想法,想让我帮出谋划策,看看能不能成;然后在一番讨论和思考之后,我否定了他的结论——你的很多观念太落后了,而且你缺乏跟这个社会的对接,比如信息化的不对等以及如今经济发展的大方向和对市场的把控程度都不行,我不赞同。他说也是,好像是老了,还是你们年轻人有想法,比我们出息。这句话我在心里愣了一下,却又有些得意。&/p&&p&但我知道我还是远远不够格谈“出息”二字,我很糟糕&/p&&p&&br&&/p&&p&P4&/p&&p&A领导的儿子10岁,个子已经160了,会各种乐器,英语比我还溜,你甚至跟他聊天也不会太觉得累,他能读懂你的意思;B领导的女儿不到18,已经考了游泳教练资格证,一天带学生可以赚好几K,一个月下来大几万;C同事家的孩子几岁就知道自己要好好读书,然后考交大,还知道现在都是在打基础,高中才要玩命,虽然他还挺喜欢跟人顶嘴的,又目无长辈,但不得不说是个聪明的小鬼;D同事家····&/p&&p&我们16岁的时候,网络刚打开没多久,QQ刚全面盛行,等到18岁,也没有那么多互动论坛,网络最大的作用就是打游戏和追女孩,不知道去怎么找信息渠道,依然的目无长辈,游手好闲,但也不知道自己要怎么办;就像A领导家的小孩,我觉得除了吃的饭比他多之外,18岁的我还不如他。&/p&&p&&br&&/p&&p&P5&/p&&p&有个老头一脸气急败坏的在自动售票机买地铁票,却半天不会弄,于是在那骂骂咧咧,我闲来无事便教他,他也还是一脸不爽,一番折腾后完事,他哼了一下,斜着眼笑了笑,他说他挺羡慕我的,他们这一代人什么都不懂,我说您可以学,他说他学不来,太多了,他不知道要怎么学,而且家里小孩也没啥耐心教他;&/p&&p&房东阿姨来收房租都是拿现金,我说你咋不用微信,多方便,她说不会,我说你学着用吧,不然你收租还得带着一大捆钞票跑,不安全也麻烦,她点点头,然后过了2个月后,开始用微信来收租了;&/p&&p&还有一个公交上的老太太,张口就是现在的年轻人真没礼貌,如何一代不如一代,然后一个学生模样的女孩跟她怼了半天,很气愤的下了车,老太太以一种胜利者的姿态更加大声的在车上演讲了起来,全然不顾周围厌恶的眼光,我身边的2个女孩悄悄的说,我以后才不要变成这个样子——这句话我也暗自对我的父母说过,我以后才不要变成他们这个样子;而我的母亲也对我说过,她以后才不要变成我的奶奶,她的婆婆那个样子。&/p&&p&其实你们看到的“他们”的样子,都是过去人的样子,有好有坏,一个时代造就了一批人而已&/p&&p&&br&&/p&&p&LAST&/p&&p&我妈开始嚷嚷要我给她买电脑了, 她第一次发现原来电脑挺好玩的&/p&&p&公交车上的老头才站稳,一小伙子立马让了出来位置,老头笑了笑摆摆手,你坐,你们年轻人白天上班累,我老头只有2站就下,不用&/p&&p&局座在直播玩着某战舰游戏,然后科普着各种知识,圈了好多年轻人爬上来喊666,局座也挺开心&/p&&p&我沿着河边走,顺势捡起地上一个空瓶子扔到垃圾桶,旁边的一个老头冲我笑了笑点了点头&/p&&p&&br&&/p&&p&你是什么样,你看到的世界就是什么样&/p&
你走到街头,商场,车站,到处逛逛看看,你会发现现在遵守秩序的多半是年轻人,规规矩矩排队的也是年轻人,在公交车上安静玩手机或者小声说话的也是年轻人,活跃在街上会下意识帮陌生人捡一份掉了的文件也是年轻人,比起上一辈,上上一辈,年轻人更有羞耻感…
&figure&&img src=&https://pic3.zhimg.com/v2-f7f5d0d1f64e534cdf829e_b.jpg& data-rawwidth=&983& data-rawheight=&500& class=&origin_image zh-lightbox-thumb& width=&983& data-original=&https://pic3.zhimg.com/v2-f7f5d0d1f64e534cdf829e_r.jpg&&&/figure&&p&每天接到许多朋友的咨询:&/p&&blockquote&&p&你们 vue 课程讲的深吗? 有没有 react 深入的内容学习? 你们 Angular 会讲哪个版本?有最新的 AngularJS2 吗?我要学最新的…… 哦对了,你们教 node.js 吗?我听说会了这个工资能上 20k 呢~~&/p&&/blockquote&&p&一般来说,如果不清楚对方基础,就没法往下继续了,所以我就会问:&/p&&blockquote&&p&你现在的技术掌握到哪个程度了?例如:&/p&&ul&&li&处理用户提交数据及后端传输的数据可有困难?&/li&&li&是否能够基于对象或面向对象进行程序开发?&/li&&li&对 ES6 新出现的语法是否有一定了解?&/li&&/ul&&/blockquote&&p&之所以这样问,是因为只有充分了解对方的实际情况后,才能继续讨论下去。接下来对方的回答大多都是:&/p&&blockquote&&p&我听说这些很火啊,公司面试都会问啊,我之前大概了解过 JS ,但我听说公司现在都要求这些嘛,你说的那些东西要是我不懂的话,我就不能直接学 vue / react / angular / node…… 吗??&/p&&/blockquote&&p&我眼神开始迷离了,思绪也慢慢飘向远方……忍不住想起几年前,类似的声音犹在耳畔:&/p&&blockquote&&p&我不懂 JS 啊,我不能直接学习 jQuery 吗?为什么一定要学 JS 呢?公司开发不是只需要 jQuery 就行了吗??&/p&&/blockquote&&p&这类滑稽的对话,若干年就会出现一次,仿佛冥冥中注定一般,交替往复、轮回不休…&/p&&p&好吧,且收起无意义的感触,回归正题:&/p&&blockquote&&p&其实任何框架,都是用来解决开发中的某些实际问题的,比如 jQuery 是对原生 JavaScript 进行的封装,提供了一些方便使用的方法和特性,以及一些兼容性问题的处理。但如果不了解原生 JavaScript 的流程控制、内置方法、运行机制等核心基础,而直接去学习构建在这套体系之上的框架,那么无异于架构空中楼阁,越看越迷糊、越学越迷茫、越走越艰难……&/p&&/blockquote&&p&那么,究竟要怎样才能顺畅的学习这些时下最流行的前端界宠儿呢?我们分别为大家一一介绍,先从 node.js 开始吧!&/p&&h1&nodejs 的学前要求&/h1&&p&首先需要明确的是 nodejs 其实是使用 JavaScript 基础语法做了操作浏览器之外的事情,比如:php、java 等语言做的事情。简单点说,在语法结构上和 JavaScript 是一致的,但是做的事情和 php、java 是一致的。那么学习 nodejs 之前我们必须要掌握的知识是:&/p&&h3&一、JavaScript 基础,其实就是 ecmascript 部分,包括:&/h3&&ul&&li&数据类型;&/li&&li&运算符;&/li&&li&类型转换;&/li&&li&流程控制;&/li&&li&函数、闭包、回调、原型链等;&/li&&li&事件机制;&/li&&li&对象编程;&/li&&/ul&&h3&二、对一些系统、网络等知识需要有基本了解&/h3&&ul&&li&文件系统(例如获取文件信息、创建文件、文件访问权限……,要是对此一头雾水的同学,请自行度娘:文件系统);&/li&&li&网络系统/协议(tcp/udp/http……);&/li&&li&操作系统(windows/Linux);&/li&&/ul&&h3&三、了解一些基本的系统命令和工具的使用&/h3&&ul&&li&cmd、Terminal(终端)工具;&/li&&li&ls(dir)、mkdir、rm、cd……等基础命令;&/li&&/ul&&p&以后随着学习的深入,还需要根据实际需求,要了解诸如“图形图像、字符编码、数据库”等相关的知识。 对照你个人的知识结构,你知道自己要从哪里开始了吗?&/p&&p&接下来,按照出场时间顺序,我们再来看看 AngularJS、react.js、vue.js 的学习路径。&/p&&h1&AngularJS1.x 的学前要求&/h1&&p&AngularJS 提供了一套前端开发模式,比如“模块化、组件化、依赖注入”等,解决项目开发中结构组织的编写问题。与 jQuery 类似的地方在于 AngularJS 是可以让我们在开发中不需要过多的关注一些 DOM 操作、兼容性等内容,而专注于业务的处理,在学习 AngularJS 之前,你必须得知道什么是数据类型、怎么进行流程控制、如何进行前后端交互、如何处理解析数据等基础知识,因为这些事情 AngularJS 或其他框架是不会去帮我们处理的。按照知识点类型来划分,大体有三块:&/p&&h3&一、必须要非常熟悉下面这几个知识点,我们才能处理用户提交的数据、后端传输的数据,才能知道怎么按照不同的业务去做不同的处理:&/h3&&ul&&li&数据类型;&/li&&li&运算符;&/li&&li&类型转换;&/li&&li&流程控制;&/li&&li&基本数据结构与处理(如数组、字符串、日期、集合等);&/li&&/ul&&h3&二、下面的知识点将帮助我们学会如何和后端进行交互,完成实际功能开发:&/h3&&ul&&li&http;&/li&&li&ajax;&/li&&li&CORS;&/li&&li&jsonp;&/li&&li&Promise、await/async;&/li&&li&comet、SSE甚至是WebSocket;&/li&&/ul&&h3&三、框架基本都基于对象或面向对象进行开发,使用框架,我们至少得知道什么是对象,如何面向对象,才能在框架基础上解决问题,毕竟框架不是万能的,实际开发中需要我们能够有基于框架的扩展开发能力,这也是区别于他人的核心竞争力。具体至少包括以下几个知识点:&/h3&&ul&&li&对象;&/li&&li&面向对象;&/li&&li&组件等;&/li&&/ul&&h1&AngularJS2 的学习要

我要回帖

更多关于 最小元素法例题讲解 的文章

 

随机推荐