前端外包服务

service

外包流程

Project Process
  • 咨询下单

    联系我们的客户经理,沟通您的需求和报价,支付定金下单。

  • 开发制作

    项目会分配到项目小组,组长会根据项目情况合理分工,高效高质的完成项目。

  • 测试交付

    我们会对项目的质量、兼容性进行全方面的测试,测试合格后交付给您。

  • 完工售后

    您验收确认无误后即可确认完工,后期我们将继续提供该项目的售后服务。

外包案例

case
UI-UI外包
 新建文件夹 35UI,并在文件夹下新建如下文件: manifest.json(描述文件)background.html(后台运行页面)background.js(后台运行js)on.png (插件图标) 
 javascript外包   网站权重链接查询:http://rank.chinaz.com/www.35UI.cnhttp://rank.chinaz.com/www.hnn8.comhttp://rank.chinaz.com/www.chinasgp.cnhttp://rank.chinaz.com/ww
【阅读全文】2020/4/6  标签:合作共赢
在前端项目开发过程中,总是会引入一些UI框架,已为方便自己的使用,很多大公司都有自己的一套UI框架,下面就是最近经常使用并且很流行的UI框架。 一.Mint UI...在前端外包项目开发过程中,总是会引入一些UI框架,已为方便自己的
 location属性一般引用自Location对象,可以用于获取或者设置当前的URL。 window.location === document.location;  //true  均引用自Location对象; URL的一般组成包括: eg: protocol://[user[:password]@]hostname:[port][ location属性一般引用自Location对象,可以用于获取或者设置当前的URL。 window.location === document.location;  //true  均引用自Location对象; URL的一般组成包括: eg: protocol://[user[:password]@]hostname:[port][/path][?query][#fragment] 获取URL的方式包括: location.hreflocation.toString()location.toLocaleString()document.URL 设置URL的方式: location.href = " xxx"; //不加协议会默认为相对路径,location="xxx"类似 window.location对象的其他属性包括:XML/HTML Code复制内容到剪贴板 location.host           //主机加端口号   location.hostname       //主机   location.port           //端口号   location.protocol       //协议   location.pathname       //路径   location.hash           //片段标识符,可以用于保存网页状态   location.search         //返回问号后的字段   这些URL属性均是可写的,该对象还有其他方法如locatioin.replace()、location.assign()、location.reload()等; location.assign()会在浏览器的历史记录中增加一条新纪录; location.replace()会使用新URL覆盖浏览器的当前历史记录; location.reload()会重新加载当前页面,默认不传参如果存在缓存会从浏览器缓存中加载;如果传入Boolean类型的true,则会强制从服务器加载; location.assign('http://www.baidu.com');location.reload()   // 可能从浏览器缓存加载location.reload(true)   // 强制从服务器端加载 每次修改location的属性(除hash外),页面都会以新URL重新加载; 虽然修改location.hash页面不会重新加载,但是会在浏览器中生成一条新的历史记录; Window.open()方法参数详解 history.go(1)阻止浏览器后退 
【阅读全文】2018/4/6  标签:locationreloadhref
 window.open()与window.location.href的区别window.open("index.html",'top'); 只是表示打开这个页面,并不是打开并刷新index.htmlwindow.location.href="index.html"; 表示重新定向到新页面,同时刷新打开的这个页面;eg:<tr><td style="width:96%;">进行中项目</td><td><img alt="" src="Images/demo.gif" style="text-align:right;cursor:hand;" onclick="javascript:window.open('test.html?flag=0','_top');"/></td></tr>  ... window.open()与window.location.href的区别window.open("index.html",'top'); 只是表示打开这个页面,并不是打开并刷新index.htmlwindow.location.href="index.html"; 表示重新定向到新页面,同时刷新打开的这个页面;eg:<tr><td style="width:96%;">进行中项目</td><td><img alt="" src="Images/demo.gif" style="text-align:right;cursor:hand;" onclick="javascript:window.open('test.html?flag=0','_top');"/></td></tr>  <tr><td style="width:96%;">进行中项目</td><td><img alt="" src="Images/demo.gif" style="text-align:right;cursor:hand;" onclick="javascript:window.location.href='test.html?flag=0';"/></td></tr>这两个的效果不同 JS获取当前网址信息Window.open()方法参数详解
【阅读全文】2018/4/6  标签:Windowlocation
 浏览器CSS兼容的编码准则 第一:理解css盒子模型(学习div+css布局也是很重要的,学会的css的盒子模型学习div+css也就不难了) 透彻地理解 CSS 盒子模型是首要事情,CSS 盒子模型并不难,且基本支持所有浏览器,除了某些特定条件下的 IE 浏览器。 CSS 盒子模型负责处理以下事情:... 浏览器CSS兼容的编码准则 第一:理解css盒子模型(学习div+css布局也是很重要的,学会的css的盒子模型学习div+css也就不难了) 透彻地理解 CSS 盒子模型是首要事情,CSS 盒子模型并不难,且基本支持所有浏览器,除了某些特定条件下的 IE 浏览器。 CSS 盒子模型负责处理以下事情: 一个 blcok (区块)级对象占据多大的空间 该对象的边界,留白 盒子的尺寸 盒子与页面其它元素的相对位置 CSS 盒子模型有以下准则: Block (区块)对象都是矩形 (事实上所有对象都如此) 其尺寸由 width, height, padding, borders, 以及 margins 决定 如果不设置高度,该盒子的高度将自动适应其包含的内容,加上留白等(除非使用了 float) 如果不设置宽度,一个非 float 型盒子水平上将充满其父容器(扣除父容器的留白) 处理 block 级对象时,必须注意以下事项: 如果一个盒子的宽度设置为 100%,它就不能再设置 margins, padding, 和 borders,否则会撑破其父容器 垂直毗邻的 margin 会引起复杂的坍塌问题,导致布局问题(比如两个垂直毗邻的 Block 对象,上面的对象的 bottom-margin 为 40,下面的对象的 top-margin 为 20,则两个对象的间距将是 40,而不是 60 - 译者) 拥有相对位置和绝对位置的对象,拥有不同的行为 第二:理解block级和inline级对象的区别 Block级对象: Block 级对象会自然地水平充满其父容器,因此没有必要为之设置 100% 宽度属性 Block 级对象的起始摆放位置是其父容器的左上边界,并顺排在其前面的兄弟 Block 对象的下方(除非设置 float 或绝对位置) inline级对象 inline 级对象会忽略其宽度和高度设置 inline 级对象会随着文字排版,并受排版属性的影响(如 white-space, font-size, letter-spacing) Inline 级对象可以使用 vertical-align 属性控制其垂直对齐,block 级对象不可以 Inline 级对象的下方会保留一些自然的空间,以适应字母 g 一类的会向下探出的笔画 >>display:block display:none display:inline-block 区别 一个设置为 float 的 inline 对象将变成 block 对象 第三:理解Floating和Clearing属性 实现多栏排版的最好方法是使用 float属性,float 也是一个将使你受益匪浅的属性。一个 float 对象可以居左或居右,一个设置为 float 的对象,将根据设置的方向,左移或右移到其父容器的边界,或其前面的 float 对象的边界,而紧随其后的非 float 对象或内容,则包围在其相反的方向。 以下是使用 float 和 clear 属性的一些重要准则: 一个 float 对象,将从其置身的 block 级非 float 内容流中跳出,换句话说,如果你要将一个 box 向左边 float,它后面的 block 级非 float 对象会显示到下方,inline 级内容会在旁边包围 要让一段内容从一侧包围一个 float 对象,这段内容必须要么是 inline 级的,要么也设置为相同方向的 float 一个 float 对象,如果没有设置宽度,则会自动缩成其包含的内容的宽度,因此最好为 float 对象明确设置宽度 如果一个 block 对象包含 float 子对象,会出现本文中阐述的问题。 一个设置了 clear 属性的对象,将不会包围其前面的 float 对象 一个既设置了 clear 又设置了 float 属性的对象,只有 clear:left 属性生效,clear:right 不起作用 第四:永远不要指望在所有浏览器中都一模一样 在不同浏览器实现相同的体验个功能是可能的,实现近似像素级的一致外观也是可能的,但永远不要指望一模一样,要知足常乐哟!谷歌浏览器css兼容代码 前端开发面试题及答案整理
【阅读全文】2018/3/4  标签:css
     HTML5是最新的HTML标准,他的主要目标是提供所有内容而不需要任何的像flash,silverlight等的额外插件,这些内容来自动画,视频,富GUI等   HTML5是万维网联盟(W3C)和网络超文本应用技术工作组(WHATWG)之间合作输出的   为什么HTML5里面我们不需要DTD(Document Type Definit
【阅读全文】2018/3/4  标签:面试题HTML5
 我们先要获取到项目的URL:如 git clone https://git.35UI.cn/wdm/familycloud.git1 、使用IntelliJ IDEA菜单建立本地Git仓库: VCS -> Import into Version Control -> Cre
【阅读全文】2018/1/24  标签:iedaGit
 node有一个模块叫n(这名字可够短的。。。),是专门用来管理node.js的版本的。首先安装n模块:npm install -g n第二步:升级node.js到最新稳定版sudo n stable是不是很简单?!n后面也可以跟随版本号比如:... node有一个模块叫n(这名字可够短的。。。),是专门用来管理node.js的版本的。首先安装n模块:npm install -g n第二步:升级node.js到最新稳定版sudo n stable是不是很简单?!n后面也可以跟随版本号比如:n v0.10.26或 n 0.10.26就这么简单,这可怎么办??!!另外分享几个npm的常用命令 npm -v          #显示版本,检查npm 是否正确安装。 npm install express   #安装express模块 npm install -g express  #全局安装express模块 npm list         #列出已安装模块 npm show express     #显示模块详情 npm update        #升级当前目录下的项目的所有模块 npm update express    #升级当前目录下的项目的指定模块 npm update -g express  #升级全局安装的express模块 npm uninstall express  #删除指定的模块 nodejs npm常用命令大全
【阅读全文】2018/1/17  标签:nodejs
解析获取静态资源的主机IP,避免等到请求时才发起DNS解析请求。通常在移动端HTML中可以采用如下方式完成。 <!-- cdn域名预解析 --><meta http-eqUIv="x-dns-prefetch-control" content="on"><link rel="dns-prefetch"
tion code”,在输入框输入下面的注册码43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFUIHl1IiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb2
解决方案,但不是最佳的技术方案。 由于目前的IE等浏览器不支持WebSocket,要提供WebSocket的事件处理、返回传输、在服务器端使用一个统一的API,那么该怎么办呢?幸运的是,GUIllermo Rauch创建了一个Socket.IO技术。 三、带Socket.IO的WebSocket Socket.IO是GUIllermo Rauch创建的WebSocket
【阅读全文】2017/12/21  标签:WebSocketnode
 网站大黄页(www.35UI.cn)是最大的免费网上黄页网站信息查询服务网站,拥有全国各地百万家企业信息库,找企业信息就到黄页网站大全。 如何做自己的黄页网站? 第一步:购买一个网站域名;域名相当于你网站的门牌
? 简单来说网站域名就是网络地址,通常我们简称“网址”,就是当我们要访问一个网站的时候输入的一个网络地址,这个网络地址就叫网站域名。 举个例子吧,比如35UI的网站域名是www.35UI.cn,你在浏览器输入这个网站域名就可以访问35UI这个网站了。 再比如我们经常使用的QQ腾讯的网站域名是www.qq.com,那么你要访问QQ腾讯的网站就可以在浏
【阅读全文】2017/12/19  标签:网站自己的网站
low">sign in</a> 链接级别属性 比如某博客上有这样一条评论: <a href="seo">www.35UI.cn">>seo优化</a> 如果对以上评论进行以下操作,就加入了nofollow标签: <a href="http://www.35UI.cn &q
 1、NaNNaN 即 Not a Number , 不是一个数字。那么 NaN 到底是什么呢? 在 JavaScript 中,整数和浮点数都统称为 Number 类型 。除此之外,Number 类型还有一个很特殊的值,即 NaN 。它是 Number 对象上的一个静态属性,可以通过 Number.NaN 来访问 。 ... 1、NaNNaN 即 Not a Number , 不是一个数字。那么 NaN 到底是什么呢? 在 JavaScript 中,整数和浮点数都统称为 Number 类型 。除此之外,Number 类型还有一个很特殊的值,即 NaN 。它是 Number 对象上的一个静态属性,可以通过 Number.NaN 来访问 。 console.log(Number.NaN); // NaN在 ECMAScript v1 和其后的版本中,还可以用预定义的全局属性 NaN 代替 Number.NaN 。console.log(NaN); //NaN在以下两种场景中,可能会产生 NaN 值 。 【1】表达式计算一个表达式中如果有减号 (-)、乘号 (*) 或 除号 (/) 等运算符时,JS 引擎在计算之前,会试图将表达式的每个分项转化为 Number 类型(使用 Number(x) 做转换)。如果转换失败,表达式将返回 NaN 。100 - '2a' ; // NaN'100' / '20a'; // NaN'20a' * 5 ; //NaNundefined - 1; //NaN, Number(undefined) == NaN[] * 20 ; // 0, Number([]) == 0null - 5; // -5, Number(null) == 0而 加号 (+) 不会将其两边的变量转化为 Number 类型,这是因为JS表达式的执行顺序是按照运算符的优先级从左到右依次进行的,如果加号 (+) 两边的变量都是 Number 类型时,才会做数字相加运算,如果其中有一个变量是字符串,则会将两边都作为字符串相加。5+4+"6" = "96" ;1+"2"+ 3 =  "123"【2】类型转换直接使用 parseInt,parseFloat 或 Number 将一个非数字的值转化为数字时,表达式返回 NaN 。"abc" - 3   // NaNparseInt("abc")  // NaNparseFloat("abc") //NaNNumber("abc")    //NaN对于 数字+字符 的值,其转化结果会有所不同:Number("123abc"); //NaNparseInt("123abc"); //123parseInt("123abc45"); //123parseFloat("123.45abc");//123.45Number 转换的是整个值,而不是部分值;parseInt 和 parseFloat 只转化第一个无效字符之前的字符串。 另外,一元加操作符也可以实现与 Number 相同的作用。  + "12abc"; //NaN+ "123"; //123+ "123.78"; //123.78+ "abc"; // NaN因此,当一个字符串不能被 Number、parseInt 或 parseFloat 成功转换时,就返回 NaN,表示该字符串无法被识别为数字类型,这是一个异常状态,并不是一个确切的值。 所以 NaN != NaN , 因为它是一个异常状态,而不是一个确切的值。 2、isNaNisNaN() 是一个全局方法,它的作用是检查一个值是否能被 Number() 成功转换 。 如果能转换成功,就返回 false,否则返回 true 。isNaN(NaN)    //true 不能转换isNaN("123")   //false 能转换isNaN("abc")    //true 不能转换isNaN("123abc")   //true 不能转换isNaN("123.45abc") //true 不能转换可以看出,isNaN() 没有办法判断某个值本身是否为 NaN 。如果想要知道某个值本身是否为 NaN,可以利用 NaN 不等于自身 这一特性来判断。function selfIsNaN(value){    return value !== value}另外,ES6 在 Number 对象上也提供了 isNaN()  方法,和全局方法 isNaN() 不同的是,它用于判断某个值本身是否为 NaN,而不需要进行类型转换。Number.isNaN("123"); //false 本身不是NaNNumber.isNaN("abc"); //false 本身不是NaNNumber.isNaN(NaN); // true 本身是NaN 前端优化:js优化if elseJavascript 中的false、0、null、undefined和空字符串对象
【阅读全文】2017/10/26  标签:NaNjsnumber
 一、面试形式1)一般而言,小公司做笔试题;大公司面谈项目经验;做地图的一定考算法 2)面试官喜欢什么样的人 ü技术好、自信、谦虚、善于沟通、表达。... 一、面试形式1)一般而言,小公司做笔试题;大公司面谈项目经验;做地图的一定考算法 2)面试官喜欢什么样的人 ü技术好、自信、谦虚、善于沟通、表达。 ü喜欢追究原理 二、面试内容2.1简历上的项目ü介绍下你的项目吧?1)第一步:介绍你项目是干嘛的2)第二步:介绍下你负责的是哪块3)第三步:介绍下里面都有什么功能,你是怎么实现的,怎么分层的? 2.2非技术=处事方法+表达+态度+忠诚度ü请你做一下自我介绍ü你在找工作时,最重要的考虑因素是什么?ü你对我们公司了解多少?你为什么想来我们公司工作?ü请谈谈你的优点和缺点?ü你为什么离开上一家公司?ü工作中曾面临的最大困难是什么?如何解决的?ü你的职业目标是什么?(短期和长期)ü你是应届生,缺乏经验,如何胜任这份工作?ü你对加班的看法?ü你对薪资的要求?ü你最擅长的技术方向是什么?谈谈你之前做的项目?ü你有什么问题要问我?(参考下面思路) n我们公司有哪些项目要做了?n项目中使用什么技术来开发?n我们公司上班时间是怎样的?n前端开发目前有多少人在做? 三、面试技巧Ø1靠的是技术2靠技巧 3玩的是心理 Ø怎么回答问题 Ø知道的问题正面回答,用案例去展示 Ø不知道的问题说解决思路 Ø原理性的知识,必须背下来,代码不需要会写,没人要求写原理、底层的代码(这是一个空子,可以钻) Ø面试始终保持平静,冷静,镇静,面试再刁难也要保持端坐,面带一丝微笑 Ø对喜欢的公司最好能表现出对加入目标公司的渴望,对技术的追求 Ø不能说不知道,可以说:之前了解过,做过这种练习,但没有拿到项目中来用。如果你回答了不知道,那面试官直接就否定你了 Ø面试官给你出题时,回答问题要思考一段时间,提出思路(这样表现出你是善于思考,交流,有思路)。间接性的试探答案,要的就是这种交互性,注意交流很重要 Ø加分的地方:对简历上的项目很熟悉,技术点都有所研究,包括封装,细节实现,以及自己编写的小工具 Ø回答问题后,可再加一些个人看法~比如:json用过吗?怎么用?回答时,可把jsonp也叙述一下 Ø不想去的公司(小公司,刚刚组建开发团队……)也尽量去面试,为的是积累经验。不同公司会问不同类型的问题,经历多了,你会发现面试很爽,尤其是秒杀他们的时候。 Ø主管和你谈话~是探测你这个人是否可用……,回答问题要表现良好的一面,一般会问~你将来怎么规划的?回答:三年达到技术总监的水平。技术总监需要做到什么?1.技术过硬2.沟通交流,带领团队…… Ø你在工作中遇到了哪些难题?? 一定要提前准备两道,忽悠他! Ø为什么离开上家公司?业务单一,太闲了,项目太少,想要更大的提升空间,这时对方肯定会想~你喜欢忙一些是吧,我们这里好多项目让你忙个够。你最好也表现出来~你要努力提升自己,不断超越的念头。 Ø要有底线别把自己的底线出卖了,要有底气。面试官可能一个劲的谈你的弱点,打击你的心里,这时千万不要乱了阵脚,不要把底线出卖了。既然面试官一直和你聊,那就证明你在他眼中是有价值的。薪资方面该怎么要就怎么要。 Ø你给自己评个等级,初,中,高,你最次也要说中级,好一点说中级偏上。 Ø谈薪资:这一步你能多拿1000-2000元,你想:对方都和你谈薪资了,证明你这个人有可用价值。 Eg.对方说给你8K,你完全能再多要1-2K,公司不差那点钱,只要你能给公司带来N多K的利益。 Ø态度很重要:没人查个人背景(这点不用太担心,大不了重新找);上班后勤勉工作,最好不要泡在QQ上,不懂赶紧问,别拖延时间,转正期也是适应期多,花点时间在工作上,工作态度非常非常重要 Ø不见得你会这项技术就录用你,也不见得你不会某项技术就不录用你。面试中要注意和面试官交流,在交流中让对方感触到你基础不错,你有潜力,你逻辑思维不错。以上这些你做到了,如果不是那家公司只招一个某个专项技术的人,那你百分之八九十会被录用的。 四、面试中需要注意的问题Ø音量大小 Ø语速控制 Ø不说“我想想”,“好像是”,“可能”,“应该”,“估计”。。。等不肯定的语汇 Ø用讲故事的方式主导面试官司的思维 Ø面试的基本流程 1)自我介绍 姓名、年龄、哪年毕业、哪年哪月入职第一家公司第一个项目开始介绍。。。 为何离职?介绍到最后一个项目的时候开始拿出来演示 2)技术面试 用项目中的实例来回答面试官的问题 3)谈薪 上家公司的薪资是多少?期望薪资是多少? 前端开发面试题及答案整理
看版本号 确认node是否安装成功node执行下面这个文件,我命名为sever.js,它将创建一个httpServer并监听8089端口。node sever//文件开始var http = reqUIre('http');var fs = reqUIre('fs'); //fsvar path = reqUIre('path');var duankou = 8089; //本地服务器端口号,可以自己
【阅读全文】2017/10/19  标签:node服务器
 创建分支svn cp -m "create branch" http://svn_server/xxx_repository/trunk http://svn_server/xxx_repository/branches/br_feature001 获得分支 ... 创建分支svn cp -m "create branch" http://svn_server/xxx_repository/trunk http://svn_server/xxx_repository/branches/br_feature001 获得分支 svn co http://svn_server/xxx_repository/branches/br_feature001  合并主干上的最新代码到分支上cd br_feature001 svn merge http://svn_server/xxx_repository/trunk 如果需要预览该刷新操作,可以使用svn mergeinfo命令,如:svn mergeinfo http://svn_server/xxx_repository/trunk --show-revs eligible或使用svn merge --dry-run选项以获取更为详尽的信息。 分支合并到主干一旦分支上的开发结束,分支上的代码需要合并到主干。SVN中执行该操作需要在trunk的工作目录下进行。命令如下:cd trunk svn merge --reintegrate http://svn_server/xxx_repository/branches/br_feature001 分支合并到主干中完成后应当删该分支,因为在SVN中该分支已经不能进行刷新也不能合并到主干。合并版本并将合并后的结果应用到现有的分支上svn -r 148:149 merge http://svn_server/xxx_repository/trunk 建立tags产品开发已经基本完成,并且通过很严格的测试,这时候我们就想发布给客户使用,发布我们的1.0版本svn copy http://svn_server/xxx_repository/trunk http://svn_server/xxx_repository/tags/release-1.0 -m "1.0 released" 删除分支或tagssvn rm http://svn_server/xxx_repository/branches/br_feature001svn rm http://svn_server/xxx_repository/tags/release-1.0 svn 命令行下常用的几个命令
【阅读全文】2017/9/20  标签:svn
 正常,没有变量的时候应该是这样:把 a 替换成 b:string.replace("a","b");以上只能替换第一个匹配的,要全文匹配应该用正则表达式:string.replace(/a/g,"b");正则加个参数 g ,表示全文匹配。 但现在,我要替换的不是 a 这个字符了,而是从外面传进来的一个变量:... 正常,没有变量的时候应该是这样:把 a 替换成 b:string.replace("a","b");以上只能替换第一个匹配的,要全文匹配应该用正则表达式:string.replace(/a/g,"b");正则加个参数 g ,表示全文匹配。 但现在,我要替换的不是 a 这个字符了,而是从外面传进来的一个变量:var key;我可以这么写:string.replace(key,"b");这只能替换第一个匹配的,要全文匹配就遇到难题了:string.replace(/key/g,"b");这样写是不行的,变量 key 传不到正则里面去。。。头疼啊 于是我在网上找啊找。我先找 replace 替换变量,有说用加号拼接正则的,好像也失败了。。。看得我晕晕乎乎的。我无意中发现 java 有个 replaceAll() 方法,我想如果可以这样不就好了吗:string.replaceAll(key,"b");这样就不用正则了,变量就能进去了。然后发现 JS 里没有 replaceAll() 这个方法。。我靠,,然后我又查 JS 怎么能够实现 replaceAll 这个方法,网上各种自己写函数啊,,看得我也晕晕乎乎的。 后来我的思路又回到了怎样把变量传到 replace() 方法里面去。哎~功夫不负有心人,看到一篇文章:http://www.jb51.net/article/40269.htm文章的最后,给出了 JS 里面正则表达式的另一个使用方法,那就是:string.replace(new RegExp(key,'g'),"b");这里,利用 JS 的 RegExp 对象,将 g 参数单拿了出来,同时,正则的内容可以用变量来代替了!!!!  银行卡号分隔 
【阅读全文】2017/8/13  标签:replacejs