با توجه به امکانات جدید Razor Components، آیا در آینده از SPA frameworks استفاده میکنید؟
استاندارد W3C HTML5، برای تعریف ویژگیهای سفارشی، استفادهی از ویژگیهای -data را توصیه میکند.
<table> <thead> <tr> <th>Address</th> <th>Price</th> </tr> </thead> <tbody> <tr> <td>Address 1</td> <td>10,000,000</td> </tr> <tr> <td>Address 2</td> <td>100,000</td> </tr> </tbody> </table>
<img src="default.png" data-zoom-url="default-zoomed.png" alt="default image">
خواندن و به روز رسانی ویژگیهای -data توسط jQuery
<video src="my-video.mp4" data-scene-offsets="9,22,38">
var offsets = $('VIDEO').data('sceneOffsets');
روش به روز رسانی آن نیز به صورت زیر است:
$('VIDEO').data('sceneOffsets', '1,2,3');
خواندن و به روز رسانی ویژگیهای -data توسط جاوا اسکریپت خالص
در مطلب جاری، روش خواندن اطلاعات از ویژگیها را بررسی کردیم. در اینجا نیز میتوان همانند قبل عمل کرد:
var offsets = document.getElementsByTagName('VIDEO')[0].getAttribute('data-scene-offsets');
document.getElementsByTagName('VIDEO')[0].setAttribute('data-scene-offsets', '1,2,3');
کار با دادههای انتساب داده شدهی به المانها از طریق ویژگیهای جدید ECMAScript 2015
در استاندارد ECMAScript 2015، به اینترفیس HTMLElement، خاصیت جدید dataset نیز اضافه شدهاست؛ از نوع DOMStringMap، که آن نیز جزئی از استاندارد HTML 5 است. هر خاصیتی که به dataset اضافه شود، به صورت یک ویژگی -data در آن المان ظاهر خواهد شد.
در این حالت برای خواندن ویژگی data-scene-offsets میتوان به صورت زیر عمل کرد:
var offsets = document.querySelector('VIDEO').dataset.sceneOffsets;
و اینبار روش به روز رسانی اطلاعات این ویژگی سفارشی به صورت زیر است:
document.querySelector('VIDEO').dataset.sceneOffsets = '1,2,3';
delete document.querySelector('VIDEO').dataset.sceneOffsets;
با تشکر از زحمات شما
به یه موردی که برخوردم اینه که اگر سرعت پایین باشه و عکسها زودتر از کدهای جاوا اسکریپت دانلود شده باشن این افکت عمل نمیکنه والبته من این مشکل رو قبلا با ایجکس هم داشتم.اگر شما به این سایت مراجعه کنین http://converter.telerik.com/ چنانچه کل صفحه بطور کامل لود نشده باشد با زدن دکمه به یک خطای هندل نشده برخورد میکنیم که بدلیل عدم دانلود کامل کدهای جاوا اسکریپتی است.چکار باید کرد که این مشکلت رخ ندهد؟امیدوارم منظورم رو درست بیان کرده باشم.
موفق و موید در پناهحق باشید
حذف تگهای زاید دریافتی از متون MS-Word
بهبود کارآیی IDEهای Jetbrains
سالها است که IDEهای Jetbrains برای اینکه در سکوهای کاری متفاوت قابل اجرا باشند، با جاوا نوشته میشوند. برای مثال Rider که یک IDE مخصوص دات نت است نیز با جاوا نوشته شدهاست و مابقی آنها نیز به همین صورت. اگر به مسیر C:\Program Files\JetBrains\JetBrains Rider 2018.3.4\bin\rider64.exe.vmoptions مراجعه کنید، فایل با پسوند vmoptions در حقیقت تنظیمات Java Virtual Machine یا JVM را به همراه دارد. این فایل طوری تنظیم شدهاست که کمترین منابع را مصرف کند؛ به همین جهت شاید در حین کار کردن با این IDEها احساس کنید که کند هستند. تنظیمات JVM مخصوص جاوای ویندوز و جاوای مک و لینوکس را در اینجا و اینجا میتوانید مطالعه کنید.
اگر بر این اساس فایل rider64.exe.vmoptions را بخواهیم تکمیل کنیم، میتوان به تنظیمات زیر رسید:
-Xms1024m -Xmx3072m -Xss64m -XX:ReservedCodeCacheSize=512m -XX:+UseCompressedOops -XX:NewRatio=2 -Dfile.encoding=UTF-8 -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=250 -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=1024m -XX:+UseParNewGC -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=1 -XX:SurvivorRatio=8 -XX:+UseCodeCacheFlushing -XX:+AggressiveOpts -XX:+CMSClassUnloadingEnabled -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=65 -XX:+CMSScavengeBeforeRemark -XX:+UseCMSInitiatingOccupancyOnly -XX:-TraceClassUnloading -XX:+AlwaysPreTouch -XX:+TieredCompilation -XX:+DoEscapeAnalysis -XX:+UnlockExperimentalVMOptions -XX:LargePageSizeInBytes=256m -XX:+DisableExplicitGC -XX:+ExplicitGCInvokesConcurrent -XX:+PrintGCDetails -XX:+PrintFlagsFinal -XX:+CMSPermGenSweepingEnabled -XX:+UseAdaptiveGCBoundary -XX:+UseSplitVerifier -XX:CompileThreshold=10000 -XX:+OptimizeStringConcat -XX:+UseStringCache -XX:+UseFastAccessorMethods -XX:+UnlockDiagnosticVMOptions -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -Djdk.http.auth.tunneling.disabledSchemes="" -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Xverify:none
پس از این تغییرات اگر Rider را اجرا کنید، حداقل نسبت به قبل دو برابر RAM مصرف خواهد کرد. همچنین بار اولی که برنامه را اجرا میکنید، چون تعدادی از این تنظیمات بر روی نحوهی JIT تاثیرگذار هستند، کمی طول میکشد تا کار کامپایل جدید آن صورت گیرد و از دفعات آتی اجرای آن، بهبود کارآیی را احساس خواهید کرد.
علاوه بر موارد فوق، فایل C:\Program Files\JetBrains\JetBrains Rider 2018.3.4\bin\idea.properties را نیز میتوانید جهت اعمال تغییرات زیر ویرایش کنید:
idea.max.intellisense.filesize=3500 idea.cycle.buffer.size=2048
Gulp #5
در مقالات قبلی به طور کامل با گالپ آشنا شدیم و گفتیم که میتواند ما را در بهینه سازی ورک فلویمان کمک کند. در این قسمت یاد خواهیم گرفت که چگونه تجربهی کاربری بهتری را از سرعت بارگذاری سایتمان ایجاد کنیم.
افزایش کارآیی Performance وب با گالپ
۱− کنار هم قرار دادن و فشرده کردن فایلهای جاوا اسکریپت
npm install --save-dev gulp-uglify gulp-concat
// first load all required js files // concat them in to script.min.js // and minify it. gulp.task('js', function() { return gulp.src([ config.bowerDir + '/jquery/dist/jquery.min.js', // این فایل وابستگی فایلهای زیر است config.bowerDir + '/materialize/dist/js/materialize.min.js', './resources/js/app.js' ]) .pipe(concat('script.min.js')) .pipe(uglify()) .pipe(size()) .pipe(gulp.dest('./public/js')); });
فشرده کردن جاوا اسکریپت، حجم فایلها را ۳۰ تا ۹۰ درصد کاهش میدهد.
۲− حذف سکلتورهای بدون استفاده css
npm install gulp-uncss --save-dev
gulp.task('css', function() { return sass(config.sassPath + '/style.scss', { style: 'compressed', loadPath: [ './resources/sass', config.bowerDir + '/materialize/sass' ] }) .on('error', util.log) .pipe(size()) .pipe(uncss({ html: ['./index.html', './posts.html'] })) .pipe(gulp.dest('./public/css')) .pipe(size()) .pipe(connect.reload()); });
gulp.task('css', function() { return sass(config.sassPath + '/style.scss', { style: 'compressed', loadPath: [ './resources/sass', config.bowerDir + '/materialize/sass' ] }) .on('error', util.log) .pipe(size()) .pipe(uncss({ html: ['./index.html', './posts.html'], timeout : 2000, // wait for load js files ignore: [ ".waves-ripple ", ".drag-target", "#sidenav-overlay", ".waves-effect", ".waves-effect .waves-ripple", ".waves-effect.waves-pinck .waves-ripple", ".waves-block.waves-light" ] })) .pipe(minifyCss()) .pipe(size()) .pipe(gulp.dest('./public/css')) .pipe(connect.reload()); });